Должен быть более чистый способ для этого

Внутри скрипта у меня есть часть, куда я иду - get-aduser и передаю ее в set-aduser, мне нужно заменить 3 поля, я делаю это 3 раза:

           get-aduser -filter 'Name -like $name' | % {Set-aduser $_ -state $pcname }
     get-aduser -filter 'Name -like $name' | % {Set-aduser $_ -POBox $bios }
     get-aduser -filter 'Name -like $name' | % {Set-aduser $_ -Description $ip }
     

Мне очень неловко спрашивать об этом, но я не мог найти, как я могу сделать это одним лайнером?

2 ответа

ForEach-Object здесь не нужен, также вы можете использовать хеш-таблицу:

      $hash=@{
    State=$pcname
    POBox=$bios
    Description=$ip
}

Get-ADuser -Filter "Name -like '$name'"|Set-ADuser @hash

-like будет использоваться с подстановочными знаками; если имя точно совпадает:

      Set-aduser -identity $name -state $pcname -POBox $bios -Description $ip
Другие вопросы по тегам