Como posso corrigir meu loop foreach no PowerShell para cada usuário do Active Directory OU?

Como posso corrigir meu loop foreach no PowerShell para cada usuário do Active Directory OU?

Meta: Crie um loop for ou foreach para executar algum código (neste caso, apenas imprima x) para cada usuário em uma UO. Estou usando o PowerShell 2.0, com módulo ActiveDirectory.

Até aqui: Isso é o que eu tenho (veja abaixo). Apenas imprime os X para cada usuário. Mas não está funcionando como eu quero; em vez disso, acho que pode estar funcionando para cada linha. Então recebo 6 X para 'nome', '----', 'teste1', 'teste2', ESPAÇO, ESPAÇO.

$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

Resultado, o ESPAÇO será representado por um ponto (.):

x
x
x
x
x
x


name                        
----                      
test1                  
test2
.
.

Não sei por que isso acontece. Se você tiver um método ou maneira melhor de lidar com isso, ficarei encantado em ouvi-lo.

Responder1

Você $poolconterá a saída de Format-Table name, a última etapa da primeira linha. Os Format-*cmdlets são usados ​​para exibir valores na tela. É quase certo que você não deseja alimentar seu foreachloop com uma tabela formatada.

$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

informação relacionada