ゴール: OU 内のすべてのユーザーに対して何らかのコード (この場合は x を印刷するだけ) を実行するための for または foreach ループを作成します。ActiveDirectory モジュールを備えた PowerShell 2.0 を使用しています。
これまでのところ: これが私の場合です (下記参照)。各ユーザーの X が出力されるだけです。しかし、思ったようには動作しません。代わりに、各行に対して実行されているのではないかと思います。そのため、'name'、'----'、'test1'、'test2'、スペース、スペースの 6 つの X が表示されます。
$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