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

2

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

Até agora : Isso é o que eu tenho (veja abaixo). Apenas imprime os X's para cada usuário. Mas não está funcionando como eu quero, em vez disso eu acho que pode estar fazendo isso para cada linha. Então eu recebo 6 X's para '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

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 uma maneira melhor de lidar com isso, ficarei encantado em ouvi-lo.

    
por caesartcs 29.09.2015 / 21:00

1 resposta

5

Seu $pool conterá a saída de Format-Table name , a última etapa na primeira linha. Os cmdlets Format-* são usados para exibir valores na tela. Você quase certamente não quer alimentar uma tabela formatada no seu loop 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
    
por 29.09.2015 / 21:13