Powershell - 有条件地向cmdlet添加参数/参数

时间:2013-09-30 11:35:44

标签: powershell parameters parameter-passing optional-parameters

假设我有以下(想象的!)PS脚本:

$par = [...]
New-Connection `
-Server $par.Server `
-User $par.User `
-Pwd $par.Pwd `
- [...]

如果$par.Pwd为空或为空,New-Connection将抛出错误。

因此,如果$par.Pwd有值,我只想包含此参数。由于有很多(!)参数,可能是空的,我不想在1000种不同的变体中编写命令。我想到了......。

New-Connection `
-Server $par.Server `
-User $par.User `
$(if ($par.Pwd) {-Pwd $par.Pwd})

但这不起作用。

1 个答案:

答案 0 :(得分:2)

如何使用哈希表方法创建新对象:

$Object = New-Object PSObject -Property @{            
    Name             = $obj.Name 
    OptValue1        = $obj.OptValue1
    OptValue2        = $obj.OptValue2   
    OptValue3        = $null
    OptValue4        = "MyValue"
}  
$Object      

<强>更新 Splatting也可以提供帮助,有关详细信息,请参阅here,但如果所有参数名称都匹配,则可以调用New-Connection,然后将其传递给包含值的哈希表。

New-Connection @par