gpt4 book ai didi

function - powershell - 仅按名称使用参数

转载 作者:行者123 更新时间:2023-12-02 03:14:10 24 4
gpt4 key购买 nike

我有一个看起来像这样的函数:

function plk(){
$cmd = $args -join ' '
plink user@myserver -i key.ppk $cmd
}

这个函数很好用,但是我希望添加一个新的参数,使我能够更改服务器(但如果我不命名我的服务器,则将 myserver 保留为默认值)。所以我将代码更改为:

function plk($server = 'myserver'){
$cmd = $args -join ' '
plink user@$server -i key.ppk $cmd
}

但是,PowerShell 似乎认为我的第一个参数是我的 $server 变量。

意思是如果我像这样使用我的函数:plk ls/folder,PowerShell 会认为 ls$server

我想解决这个问题,只有当我这样做时:plk -server 'server' ls/folder,PowerShell 会切换服务器,并使用 plk ls/folder将使用我的默认值。

最佳答案

我会在 Param block 中定义参数,为 $Server 添加一个参数,为剩余的 $Arguments 添加一个参数。

然后您可以使用 ValueFromRemainingArguments 属性:

The ValueFromRemainingArguments argument indicates that the parameter accepts all of the parameters values in the command that are not assigned to other parameters of the function.

来源:about_Functions_Advanced_Parameters

脚本:

function plk
{
Param
(
[Parameter(ValueFromRemainingArguments=$true)]
[string[]]$Arguments,

[Parameter(Mandatory=$false)]
[string]$Server = 'myServer'
)

$cmd = $Arguments -join ' '
plink user@$Server -i key.ppk $cmd
}

关于function - powershell - 仅按名称使用参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38046950/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com