如何在foreach循环中使用管道输入?

时间:2015-05-27 13:54:36

标签: powershell

尝试在包含不同搜索位置的foreach循环中运行命令,例如:

$ous ='ou=Staff,dc=example,dc=local', 'ou=Managers,dc=example,dc=local'

$colItems = $ous | ForEach { Get-ADUser -Filter * -SearchBase "ou=Example,dc=example,dc=local" -Properties whenCreated | select -Property Enabled,Name,SamAccountName,whenCreated }

我想每次都在搜索查询中替换OU

"ou=Example,dc=example,dc=local"

2 个答案:

答案 0 :(得分:1)

我认为这是我的答案。

$colItems = ForEach ($ou in $ous) { Get-ADUser -Filter * -SearchBase $ou -Properties whenCreated | select -Property Enabled,Name,SamAccountName,whenCreated }

答案 1 :(得分:1)

如果使用带有ForEach-Object循环的管道,则必须使用当前对象变量($_)来引用管道中的当前对象。改变这个:

$ous | ForEach { Get-ADUser -Filter * -SearchBase "ou=Example,dc=example,dc=local" -Properties ... }

进入这个:

$ous | ForEach-Object { Get-ADUser -Filter * -SearchBase $_ -Properties ... }

有关详细信息,请参阅about_Automatic_Variables