Powershell, Pipe-Liste der Argumente an einen Befehl

445
LPChip

Ich arbeite an einem Powershell-v3-Skript, um Benutzer in Active Directory zu erstellen.

Ich verwende dafür das new-ADUser-Comlet. Ich möchte einen Befehl ausführen, um den Benutzer zu erstellen und alle Optionen in einem Satz festzulegen. Da ich jedoch so viele Einstellungen vornehmen muss, würde ich einen wirklich langen Befehl erhalten, der schwer zu lesen ist. Instaed Ich bevorzuge es, etwas zu erstellen, das an new-aduser weiterzuleiten und dasselbe zu erreichen.

Ich habe folgendes versucht:

$param = @() $param.Name = "Test Name" $param.GivenName = "Test" $param.Surname = "Test" $param.Enabled = 1  $param | new-aduser 

Wenn ich jedoch Folgendes mache, funktioniert es:

new-aduser -name "Test Name" -GivenName "Test" -Surname "Test" -Enabled 1 

Wenn ich das ausführe, kann ich das nur tun, wenn die Benennung korrekt ist. Es ist ... Also, was mache ich falsch, oder gibt es eine andere Möglichkeit, wie ich die unten aufgelisteten Parameter haben kann, und diese an new-aduser senden? Kann ich das Array irgendwie in ein Objekt konvertieren und aktivieren, und wenn ja, wie?

Wenn ich irgendwie nur new-aduser verwenden und sie untereinander auflisten kann, würde das auch funktionieren, aber ich glaube nicht, dass Powershell so locker ist wie Php.

Danke im Voraus. :)

2
Wie wäre es mit dem splaten? PetSerAl vor 5 Jahren 0
LPChip - Ich denke, eine Lösung wie $ param = @ ("Testname", "Test", "Test", 1) `gefolgt von` new-aduser -name $ param [0] -GivenName $ param [1] -Surname $ param [2] -Enabled $ param [3] `würde nicht ausreichen, richtig? Hier ist ein Screenshot, um mit einem Syntaxbeispiel klarer zu sein: https://i.imgur.com/WfxiQYE.png Auf diese Weise übergeben Sie die Werte in das Array und referenzieren die Werte mit einem Indexwert, z. B. `~ [0]. `,` ~ [1] `usw. Vielleicht nicht das, wonach Sie suchen, aber ich wollte nur erwähnen, dass es eine einfache Lösung ist, nach der Sie suchen. Pimp Juice IT vor 5 Jahren 0
@PimpJuiceIT danke, aber in der Tat bin ich nicht danach. Ich habe schon so etwas, aber die wenigen Params, die ich aufgeführt habe, waren ein Beispiel. Meine eigentliche Params-Liste ist über 20 Params lang, das ist wirklich schwer zu verfolgen, da die Zeile sehr lang und unlesbar ist. LPChip vor 5 Jahren 0

1 Antwort auf die Frage

2
harrymc

Von der Hey, Scripting Guy! Blog kommt dieses Beispiel:

Import-Module activedirectory  $users = @{ "name" = "fred" "givenName" = "manfred" "l" = "lexington" }  New-ADUser @users 

In einer Stack Overflow-Antwort wird außerdem erläutert, wie der OtherAttributesParameter verwendet wird, wenn Folgendes erforderlich ist:

$users = @{  "name" = “fred  "givenName" = “Manfred"  "l" = "lexington" "OtherAttributes" = @{  'extensionAttrbute1' = "Test" } } 
Toll, das funktioniert. :) Also anstatt $ array | new-aduser, sein new-aduser @array. cool. :) LPChip vor 5 Jahren 0