Как исправить цикл foreach в PowerShell для каждого пользователя подразделения Active Directory?

Как исправить цикл foreach в PowerShell для каждого пользователя подразделения Active Directory?

Цель: Создайте цикл for или foreach для выполнения некоторого кода (в данном случае просто выведите x) для каждого пользователя в OU. Я использую powershell 2.0 с модулем ActiveDirectory.

До сих пор: Вот что у меня есть (см. ниже). Он просто выводит X для каждого пользователя. Но он работает не так, как мне хотелось бы, вместо этого, я думаю, он делает это для каждой строки. Поэтому я получаю 6 X для 'name', '----', 'test1', 'test2', ПРОБЕЛ, ПРОБЕЛ.

$pool = Get-ADUser -Filter * -SearchScope Subtree -SearchBase "OU=Test,OU=Users,OU=jack,DC=Corp,DC=jill,DC=com" -Properties name | FT name
foreach ($user in $pool )
{ write-host "x"}
$pool

Результат, ПРОБЕЛ будет представлен точкой (.):

x
x
x
x
x
x


name                        
----                      
test1                  
test2
.
.

Я не уверен, почему это происходит. Если у вас есть лучший метод или способ справиться с этим, я буду рад его услышать.

решение1

Ваш $poolбудет содержать вывод Format-Table name, последнего шага в первой строке. Format-*Командлеты используются для отображения значений на экране. Вы почти наверняка не захотите передавать в foreachцикл отформатированную таблицу.

$pool = Get-ADUser -Filter * -SearchScope Subtree -SearchBase "OU=Test,OU=Users,OU=jack,DC=Corp,DC=jill,DC=com"
foreach ($user in $pool) {
  Write-Host "x"
}

# And if you really want to see an `ft $pool`:
$pool | Format-Table name

Связанный контент