2016-04-25 5 views
4

同じコマンドをGet-QadUserSet-QadUserの1つのプロパティとその値に実行する必要がありますが、myプロパティは変数です。パラメータ名でpowershellコマンドを実行する方法は可変です

私のコードは、(設定は動作しません!):ここではドン・ジョーンズ自身が説明したように

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

'$ Splatting = @ {$ property = $ NewValue}; Set-QadUser @ Splatting' – PetSerAl

答えて

2

あなたはPowerShellの機能を使用することができ、この場合をスプラッティングと呼ばれる:Windows PowerShell: Splatting。この中

あなたは以下のようにプロパティと値のペアの辞書オブジェクトなどのパラメータを定義することができます。下記に示すように、あなたが@演算子を使用して、コマンドレットにこれを渡すことができ

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

Set-QadUser @parameters 

あなたの完全な作業スクリプトは以下のようになります。

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

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

編集: PetSerAlがすでにコメントで答えを出したことに以前気付かなかった。私はこの答えがまた全体的な価値を加えることを望む。