目标:创建一个 for 或 foreach 循环来为 OU 中的每个用户执行一些代码(在本例中,只打印 x)。我使用的是带有 ActiveDirectory 模块的 powershell 2.0。
迄今为止:这是我所拥有的(见下文)。它只是为每个用户打印出 X。但它并没有按照我想要的方式工作,相反,我认为它可能对每一行都这样做。所以我得到了 6 个 X,分别为“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
结果,空格将用句点 (.) 表示:
x
x
x
x
x
x
name
----
test1
test2
.
.
我不知道为什么会这样。如果你有更好的方法或处理方式,我会很高兴听到。
答案1
您将在第一行中包含最后一步$pool
的输出。cmdlet用于在屏幕上显示值。您几乎肯定不想将格式化的表格输入到循环中。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