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

我需要将相同的命令Get-QadUser和Set-QadUser运行到一个属性和他的值,但我的属性是一个变量.

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

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

最佳答案 在这种情况下,您可以使用名为Splatting的PowerShell功能,如Don Jones本人所述:
Windows PowerShell: Splatting.

在此,您可以将参数定义为Property和Value对的字典对象,如下所示:

$parameters = @{$FirstPropertyName = $FirstValue, $SecondPropertyName = $SecondValue}

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

Set-QadUser @parameters

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

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

$parameters = @{$PropertyName = $NewValue}
$user | Set-QadUser @parameters # OK

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

点赞