2015-05-27 5 views
0

Попытка выполнить команду в foreach цикле, который содержит различные места поиска, например:Как использовать ввод конвейера в цикле foreach?

$ous ='ou=Staff,dc=example,dc=local', 'ou=Managers,dc=example,dc=local' 

$colItems = $ous | ForEach { Get-ADUser -Filter * -SearchBase "ou=Example,dc=example,dc=local" -Properties whenCreated | select -Property Enabled,Name,SamAccountName,whenCreated } 

Я хочу, чтобы заменить OU в поисковом запросе каждый раз

"ou=Example,dc=example,dc=local" 

ответ

1

Если используется трубопровод с ForEach-Object циклом, вы должны использовать текущий переменный объект ($_), чтобы обратиться к текущему объекту из трубопровода. Изменить это:

$ous | ForEach { Get-ADUser -Filter * -SearchBase "ou=Example,dc=example,dc=local" -Properties ... } 

в этом:

$ous | ForEach-Object { Get-ADUser -Filter * -SearchBase $_ -Properties ... } 

См about_Automatic_Variables для получения дополнительной информации.

1

Я думаю, что это был мой ответ.

$colItems = ForEach ($ou in $ous) { Get-ADUser -Filter * -SearchBase $ou -Properties whenCreated | select -Property Enabled,Name,SamAccountName,whenCreated } 
+0

используйте 'foreach ($ ou in $ ous)' (без заглавных букв) - уменьшает путаницу между конструкцией цикла 'foreach' и псевдонимом командлета' ForEach-Object' –

Смежные вопросы