POWERSHELL - 使用带有 Foreach 循环的数组,查看 OU 中的用户 -
POWERSHELL - Using an array with a Foreach loop, looking at users in an OU -
基本上我想找到不活跃的用户,所以我在搜索库中使用 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 days) -AND (passwordlastset -le days) -AND (enabled -eq $True)} -Properties lastlogondate, passwordlastset | Select-Object name, lastlogondate, passwordlastset, samaccountname))
{
....
并收到错误....
At line:18 char:22
+ $OU | ForEach ($user in (Get-ADUser -SearchBase $_ -filter {(lastlogondate -notl ...
+ ~~ Unexpected token 'in' in expression or statement. At line:18 char:21
+ $OU | ForEach ($user in (Get-ADUser -SearchBase $_ -filter {(lastlogondate -notl ...
+ ~ Missing closing ')' in expression. At line:18 char:293
+ ... samaccountname))
+ ~ Unexpected token ')' in expression or statement.
+ CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : UnexpectedToken
这很好用
$SearchBase1 = "OU1"
$SearchBase2 = "OU2"
$SearchBase3 = "OU3"
ForEach ($user in(Get-ADUser -SearchBase $SearchBase1 -filter {(lastlogondate -notlike "*" -OR lastlogondate -le days) -AND (passwordlastset -le days) -AND (enabled -eq $True)} -Properties lastlogondate, passwordlastset | Select-Object name, lastlogondate, passwordlastset, samaccountname))
{
问题是您试图创建一个嵌套的 ForEach 循环,而忘记了循环的第一部分。在这里,您希望将 $OU
传递到 ForEach 循环中,并在该 ForEach 循环中创建另一个基于第一个 ForEach 循环的当前对象的循环。
$OU | ForEach{
ForEach ($user in (Get-ADUser -SearchBase $_ -filter {(lastlogondate -notlike "*" -OR lastlogondate -le days) -AND (passwordlastset -le days) -AND (enabled -eq $True)} -Properties lastlogondate, passwordlastset | Select-Object name, lastlogondate, passwordlastset, samaccountname))
{
<Do Stuff>
} #End inner ForEach Loop for current OU
}
基本上我想找到不活跃的用户,所以我在搜索库中使用 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 days) -AND (passwordlastset -le days) -AND (enabled -eq $True)} -Properties lastlogondate, passwordlastset | Select-Object name, lastlogondate, passwordlastset, samaccountname))
{
....
并收到错误....
At line:18 char:22 + $OU | ForEach ($user in (Get-ADUser -SearchBase $_ -filter {(lastlogondate -notl ... + ~~ Unexpected token 'in' in expression or statement. At line:18 char:21 + $OU | ForEach ($user in (Get-ADUser -SearchBase $_ -filter {(lastlogondate -notl ... + ~ Missing closing ')' in expression. At line:18 char:293 + ... samaccountname)) + ~ Unexpected token ')' in expression or statement. + CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException + FullyQualifiedErrorId : UnexpectedToken
这很好用
$SearchBase1 = "OU1"
$SearchBase2 = "OU2"
$SearchBase3 = "OU3"
ForEach ($user in(Get-ADUser -SearchBase $SearchBase1 -filter {(lastlogondate -notlike "*" -OR lastlogondate -le days) -AND (passwordlastset -le days) -AND (enabled -eq $True)} -Properties lastlogondate, passwordlastset | Select-Object name, lastlogondate, passwordlastset, samaccountname))
{
问题是您试图创建一个嵌套的 ForEach 循环,而忘记了循环的第一部分。在这里,您希望将 $OU
传递到 ForEach 循环中,并在该 ForEach 循环中创建另一个基于第一个 ForEach 循环的当前对象的循环。
$OU | ForEach{
ForEach ($user in (Get-ADUser -SearchBase $_ -filter {(lastlogondate -notlike "*" -OR lastlogondate -le days) -AND (passwordlastset -le days) -AND (enabled -eq $True)} -Properties lastlogondate, passwordlastset | Select-Object name, lastlogondate, passwordlastset, samaccountname))
{
<Do Stuff>
} #End inner ForEach Loop for current OU
}