Мне нужно выяснить, как исключить несколько подразделений из нижеприведенного каждого l oop по различаемому имени, чтобы учетная запись пользователя / компьютера не была найдена дважды (один раз в исходном подразделении, а затем снова в подразделении, в которое оно перемещено.
Я пытался использовать предложение Where, пытаясь отфильтровать одну OU для тестирования, но когда я запускаю сценарий с ним, ничего не обрабатывается ниже. Каков наилучший метод для исключения OU из моего foreach l oop?
foreach ($OU in $OUs) {
#Where($OU.DistinguishedName -ne 'OU=Disabled Users,DC=test,DC=local') {
$params = @{
SearchBase = [String]$OU.DistinguishedName
SearchScope = [String]"OneLevel"
AccountInactive = $true
TimeSpan = ([timespan]$days)
Verbose = $true
}
If($users) {
$params.Add("UsersOnly",$true)
}
ElseIf($computers) {
$params.Add("ComputersOnly",$true)
}
$accounts = Search-ADAccount @params
$params.Clear()
foreach($account in $accounts) {
If ($noDisable -notcontains $account.Name -and $account.ObjectClass -eq "User" ) {
$params = @{
Identity = [string]$account.DistinguishedName
Verbose = $true
}
Disable-ADAccount @params @whatIf
$params.Add("Description",$description)
Set-ADUser @params @WhatIf
$params.Remove('Description')
$params.Add("TargetPath", 'OU=Disabled Users,DC=test,DC=local')
Move-ADObject @params @WhatIf
}
elseif($noDisable -notcontains $account.Name -and $account.ObjectClass -eq "Computer") {
$params = @{
Identity = [string]$account.DistinguishedName
Verbose = $true
}
Disable-ADAccount @params @whatIf
$params.Add("Description",$description)
Set-ADComputer @params @WhatIf
$params.Remove('Description')
$params.Add("TargetPath", 'OU=Disabled Computers,DC=test,DC=local')
Move-ADObject @params @WhatIf
}
}
#}
}