2016-04-25 5 views
4

Ich muss den gleichen Befehl Get-QadUser und Set-QadUser zu einer Eigenschaft und seinem Wert ausführen, aber meine Eigenschaft ist eine Variable.Wie zum Ausführen Powershell-Befehl mit Parametername ist Variable

mein Code (Set funktioniert nicht!):

$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

Antwort

2

Sie Powershell-Funktion verwenden können genannt in diesem Fall Splatting wie von Don Jones selbst hier erklärt: Windows PowerShell: Splatting.

In diesem können Sie die Parameter als Wörterbuchobjekt von Eigentum und Wertepaare wie unten definiert:

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

Dann Sie diese zu Ihrem Cmdlets @ Operator passieren können, wie unten dargestellt:

Set-QadUser @parameters 

Ihre gesamte Arbeits Skript wird wie folgt aussehen:

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

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

Edit: Ich habe nicht bemerkt, dass PetSerAl bereits die Antwort in Kommentaren gab. Ich hoffe, diese Antwort bringt auch insgesamt einen Mehrwert.

Verwandte Themen