Powershell foreach write-host как отдельные записи

avatar
harringg
17 июля 2014 в 02:59
5238
1
0

У меня работает следующий скрипт Powershell, который ищет фамилию пользователей AD, и я не получаю ожидаемых результатов вывода цикла foreach. Домен Server 2008 R2 и Powershell v3

Если у меня есть UserA LastName1 и UserB LastName1, результаты выводятся следующим образом:

Введите имя пользователя: LastName1

User Name:  UserB LastName1 UserA LastName1
Login Name:  UserB.LastName1 UserA.LastNam1
Year Created:  2012 2014

User Name:  UserB LastName1 UserA LastName1
Login Name:  UserA.LastName1 UserA.LastName1
Year Created:  2012 2014

Я пытаюсь вывести вот так:

User Name:  UserB LastName1
Login Name:  UserB.LastName1
Year Created:  2012

User Name:  UserA LastName1
Login Name:  UserA.LastName1
Year Created:  2014

Я использую следующий сценарий:

$UserName = read-host "Please Enter Users LastName"
$SAN = "*$UserName*"
$GetUser = GET-ADUSER -Filter {(SamAccountName -like $SAN) -and (enabled -ne "FALSE")}         
-Properties * | Sort-Object givenname -Descending

foreach ($FoundUser in $GetUser) 

{
write-host "User Name: " $GetUser.CN
write-host "Login Name: " $GetUser.samaccountname
write-host "Year Created: " $getUser.whencreated.year
write-host
}

$ GetUser.CN приводит к следующему, поэтому я пытаюсь понять, почему мой узел записи создает две записи в строке.

UserB LastName1
UserA LastName1
Источник

Ответы (1)

avatar
mkasberg
17 июля 2014 в 03:03
2

В вашем цикле foreach вам необходимо заменить каждый $GetUser на $FoundUser. $GetUser Содержит весь список, а $FoundUser - текущая запись списка, которая изменяется с каждой итерацией цикла. Как вы это реализовали сейчас, вы распечатываете все содержимое списка на каждой итерации, а не печатаете только текущий элемент.

Ваш обновленный код будет выглядеть так:

$UserName = read-host "Please Enter Users LastName"
$SAN = "*$UserName*"
$GetUser = GET-ADUSER -Filter {(SamAccountName -like $SAN) -and (enabled -ne "FALSE")}         
-Properties * | Sort-Object givenname -Descending

foreach ($FoundUser in $GetUser) 

{
    write-host "User Name: " $FoundUser.CN
    write-host "Login Name: " $FoundUser.samaccountname
    write-host "Year Created: " $FoundUser.whencreated.year
    write-host
}