Как я могу исправить свой цикл foreach в powershell для каждого пользователя OU Active Directory?
Цель: создать цикл for или foreach для выполнения некоторого кода (в данном случае просто вывести x) для каждого пользователя в подразделении. Я использую PowerShell 2.0, с модулем ActiveDirectory.
Пока: это то, что у меня есть (см. Ниже). Он просто распечатывает X для каждого пользователя. Но это не работает, как я хочу, вместо этого я думаю, что это может быть сделано для каждой строки. Таким образом, я получаю 6 X для 'name', '----', 'test1', 'test2', SPACE, SPACE.
$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