我需要将同一个命令Get-QadUser
和Set-QadUser
运行到一个属性及其值,但我的属性是变量。
我的代码(设置不起作用!):
$property = 'MobilePhone' # OK
$value = ($User | get-QadUser -IncludedProperties $property).$property # OK
$user | Set-QadUser -$PropertyName $NewValue # NOK
答案 0 :(得分:2)
在这种情况下,您可以使用名为 Splatting 的PowerShell功能,如Don Jones本人所述:Windows PowerShell: Splatting。
在此,您可以将参数定义为属性和值对的字典对象,如下所示:
$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已在评论中给出答案。我希望这个答案也能增加整体价值。