9

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

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

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

所以,我只想包含这个参数,如果$par.Pwd有一个值。由于有很多(!)参数,可能是空的,我不想用 1000 种不同的变体编写命令。我想到了类似的东西。

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

但这不起作用。

4

1 回答 1

7

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

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

更新 Splatting 也可能有所帮助,请参阅此处了解更多详细信息,但如果您的所有参数名称都匹配,您可能可以调用 New-Connection 然后将包含您的值的哈希表传递给它。

New-Connection @par
于 2013-09-30T12:18:07.300 回答