Powershell, конвейерный список аргументов команды

330
LPChip

Я работаю над сценарием powershell v3 для создания пользователей в Active Directory.

Для этого я использую комлет new-ADUser. Я хочу выполнить одну команду, чтобы создать пользователя и установить все параметры в одном наборе, но, учитывая, что у меня так много настроек, я получу очень длинную команду, которую трудно прочитать. Instaed Я предпочитаю создать что-то, передать это новому пользователю и добиться того же.

Я попробовал следующее:

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

Однако, если я сделаю следующее, это сработает:

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

Если я выполняю это, он говорит, что я могу сделать это только при правильном присвоении имени. Это ... Так, что я делаю не так, или есть другой способ, как я могу получить параметры, перечисленные ниже, и отправить их в new-aduser? Можно ли как-то преобразовать массив в объект и заставить его работать, и если да, то как?

Если бы я мог как-то просто использовать только new-aduser и перечислить их ниже друг друга, это тоже сработало бы, но я не думаю, что Powershell настолько свободен с энтерами, как php.

Заранее спасибо. :)

2
Как насчет брызг? PetSerAl 5 лет назад 0
LPChip - я полагаю, что решение, такое как `$ param = @ (" Test Name "," Test "," Test ", 1)`, за которым следует `new-aduser -name $ param [0] -GivenName $ param [1] -Фамилия $ param [2] -Включить $ param [3] `не хватит, верно? Вот снимок экрана, который будет очень понятным с примером синтаксиса: https://i.imgur.com/WfxiQYE.png Таким образом, вы передаете значения в массив, а затем ссылаетесь на значения индекса, т.е. `~ [0] `,` ~ [1] `и так далее. Может быть, не то, что вы ищете, но я хотел бы упомянуть, на случай, если это простое решение, которое вы ищете. Pimp Juice IT 5 лет назад 0
@PimpJuiceIT спасибо, но на самом деле это не то, что мне нужно. У меня уже есть что-то подобное, но несколько параметров, которые я перечислил, были примером. Мой фактический список параметров содержит более 20 параметров, и его очень сложно отследить, потому что строка очень длинная и нечитаемая. LPChip 5 лет назад 0

1 ответ на вопрос

2
harrymc

От Эй, Сценарист! Блог приходит этот пример:

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

Ответ переполнения стека также объясняет, как использовать OtherAttributesпараметр, если вам необходимо:

$users = @{  "name" = “fred  "givenName" = “Manfred"  "l" = "lexington" "OtherAttributes" = @{  'extensionAttrbute1' = "Test" } } 
Круто, это работает. :) Так что вместо того, чтобы делать $ массив | new-aduser, его new-aduser @array. прохладно. :) LPChip 5 лет назад 0