基本上我想找到不活跃的用户,所以我在搜索库中使用foreach循环,
现在我试图在开始的时候看着几个OU的一个阵列。
所以这就是我的尝试......
$OU=@("OU Path 1",
"OU Path 2",
"OU Path 3")
$OU | ForEach ($user in (Get-ADUser -SearchBase $_ -filter {(lastlogondate -notlike "*" -OR lastlogondate -le $90days) -AND (passwordlastset -le $90days) -AND (enabled -eq $True)} -Properties lastlogondate, passwordlastset | Select-Object name, lastlogondate, passwordlastset, samaccountname))
{
....
并收到错误....
行:18 char:22 + $ OU | ForEach($ user in(Get-ADUser -SearchBase $ _ -filter {(lastlogondate -notl ... + ~~意外的令牌' in'在表达或陈述中。在行:18 char:21 + $ OU | ForEach($ user in(Get-ADUser -SearchBase $ _ -filter {(lastlogondate -notl ... +〜缺少关闭')'在表达中。在行:18 char:293 + ... samaccountname)) +〜意外的令牌')'在表达或陈述中。 + CategoryInfo:ParserError:(:) [],ParentContainsErrorRecordException + FullyQualifiedErrorId:UnexpectedToken
这很好用
$SearchBase1 = "OU1"
$SearchBase2 = "OU2"
$SearchBase3 = "OU3"
ForEach ($user in(Get-ADUser -SearchBase $SearchBase1 -filter {(lastlogondate -notlike "*" -OR lastlogondate -le $90days) -AND (passwordlastset -le $90days) -AND (enabled -eq $True)} -Properties lastlogondate, passwordlastset | Select-Object name, lastlogondate, passwordlastset, samaccountname))
{
答案 0 :(得分:1)
问题是你正在尝试创建一个嵌套的ForEach循环,并忘记了循环的第一部分。在这里,您希望将$OU
传递到ForEach循环中,并在该ForEach循环中基于第一个ForEach循环的当前对象创建另一个循环。
$OU | ForEach{
ForEach ($user in (Get-ADUser -SearchBase $_ -filter {(lastlogondate -notlike "*" -OR lastlogondate -le $90days) -AND (passwordlastset -le $90days) -AND (enabled -eq $True)} -Properties lastlogondate, passwordlastset | Select-Object name, lastlogondate, passwordlastset, samaccountname))
{
<Do Stuff>
} #End inner ForEach Loop for current OU
}