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ê $pool
conterá 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 foreach
loop 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