2014-07-17 3 views
0

У меня есть следующий скрипт Powershell, который ищет имя пользователя AD, и я не получаю результаты вывода цикла foreach, которые я ожидаю. Server 2008 R2 домена и Powershell v3Powershell foreach write-host как отдельные записи

Если у меня есть 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

В вашем 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 
} 
Смежные вопросы