mar*_*sze 8 parameters powershell parameter-passing optional-parameters
假设我有以下(虚构的!)PS 脚本:
$par = [...]
New-Connection `
-Server $par.Server `
-User $par.User `
-Pwd $par.Pwd `
- [...]
Run Code Online (Sandbox Code Playgroud)
如果$par.Pwd
为空或为空,New-Connection
将抛出错误。
所以,我只想包括这个参数,如果$par.Pwd
有一个值。由于有很多(!)参数,它们可能是空的,我不想以 1000 种不同的变体编写命令。我想到了某事。
New-Connection `
-Server $par.Server `
-User $par.User `
$(if ($par.Pwd) {-Pwd $par.Pwd})
Run Code Online (Sandbox Code Playgroud)
但这不起作用。
如何使用哈希表方法创建新对象:
$Object = New-Object PSObject -Property @{
Name = $obj.Name
OptValue1 = $obj.OptValue1
OptValue2 = $obj.OptValue2
OptValue3 = $null
OptValue4 = "MyValue"
}
$Object
Run Code Online (Sandbox Code Playgroud)
更新 Splatting 也可能有所帮助,请参阅此处了解更多详细信息,但如果您的所有参数名称都匹配,则您可以调用 New-Connection,然后将包含您的值的哈希表传递给它。
New-Connection @par
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4835 次 |
最近记录: |