如何运行参数名称可变的powershell命令

Alb*_*ban 5 syntax powershell

我需要对一个属性及其值运行相同的命令Get-QadUserSet-QadUser但我的属性是一个变量。

我的代码(设置不起作用!):

$property = 'MobilePhone' # OK
$value = ($User | get-QadUser -IncludedProperties $property).$property # OK
$user | Set-QadUser -$PropertyName $NewValue # NOK
Run Code Online (Sandbox Code Playgroud)

Ama*_*rma 5

在这种情况下,您可以使用名为Splatting的 PowerShell 功能,如 Don Jones 本人在此处的解释:Windows PowerShell: Splatting

在这里,您可以将参数定义为属性和值对的字典对象,如下所示:

$parameters = @{$FirstPropertyName = $FirstValue; $SecondPropertyName = $SecondValue; $ThirdPropertyName = $ThirdValue}
Run Code Online (Sandbox Code Playgroud)

然后您可以使用@运算符将​​其传递给您的 cmdlet,如下所示:

Set-QadUser @parameters
Run Code Online (Sandbox Code Playgroud)

您的完整工作脚本如下所示:

$property = 'MobilePhone' # OK
$value = ($User | get-QadUser -IncludedProperties $property).$property # OK

$parameters = @{$PropertyName = $NewValue}
$user | Set-QadUser @parameters # OK
Run Code Online (Sandbox Code Playgroud)

编辑:我之前没有注意到 PetSerAl 已经在评论中给出了答案。我希望这个答案也能增加整体价值。