假设我有以下(想象的!)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})
但这不起作用。
答案 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