2016-04-01 4 views
0
$names = Import-CSV C:\PowerShell\TerminatedEmployees.csv 
$Date = Get-Date 
foreach ($name in $names) 
{ 
    Get-ADPrincipalGroupMembership -Identity "$($name.TextBox37)" | select Name | Out-File "C:\Powershell\ADUserMemberships\$($name.TextBox37)Memberships.txt" 
    $ADgroups = Get-ADPrincipalGroupMembership -Identity "$($name.TextBox37)" | where {$_.Name -ne "Domain Users"} 
    Remove-ADPrincipalGroupMembership -Identity "$($name.TextBox37)" -MemberOf $ADgroups -Confirm:$false 
    Disable-ADAccount -Identity "$($name.TextBox37)" 
    Get-ADUser -Identity "$($name.TextBox37)" | Move-ADObject -TargetPath "OU=DisabledAccounts,OU=XXX,DC=XXX,DC=XXXX,DC=XXX" 
    Set-ADUser -Identity "$($name.TextBox37)" -Description "Disabled $Date" 
} 

これは私が既に使っているスクリプトです。しかし、私はforeachステートメントを通過する必要があるかどうかを判断するために、ADユーザーの2つのプロパティをチェックする必要があることを認識しました。両方の特性を満たす必要があります。そうであれば、ADユーザーが処理される理由はありません。If And PowershellのADユーザーのためのforeachを使ったステートメント

  1. ADユーザーは既に無効になっています。

  2. ADユーザーは既に無効なOUに常駐しています。

If -Andステートメントでこれを行う必要があると考えています。しかし、これはforeachの前かforeachの内部で行う必要がありますか?

答えて

0
Get-ADUserを持つユーザーアカウントを取得することから始め、その後、ユーザーの DistinguishedNameに無効OUを比較+ Disabledプロパティを検査

$names = Import-CSV C:\PowerShell\TerminatedEmployees.csv 
$Date = Get-Date 
$DisabledOU = "OU=DisabledAccounts,OU=XXX,DC=XXX,DC=XXXX,DC=XXX" 
foreach ($name in $names) 
{ 
    $ADUser = Get-ADUser -Identity "$($name.TextBox37)" 
    if(-not($ADUser.Enabled) -and $ADUser.DistinguishedName -like "*,$DisabledOU") 
    { 
     # no need to proceed, skip to next name in foreach loop 
     continue 
    } 
    $ADGroups = Get-ADPrincipalGroupMembership -Identity "$($name.TextBox37)" 
    $ADGroups |Select-Object Name |Out-File "C:\Powershell\ADUserMemberships\$($name.TextBox37)Memberships.txt" 
    # no need to call Get-ADPrincipalGroupMembership again 
    $ADgroups = $ADGroups | where {$_.Name -ne "Domain Users"} 
    Remove-ADPrincipalGroupMembership -Identity "$($name.TextBox37)" -MemberOf $ADgroups -Confirm:$false 
    Disable-ADAccount -Identity "$($name.TextBox37)" 
    $ADUser | Move-ADObject -TargetPath $DisabledOU 
    Set-ADUser -Identity "$($name.TextBox37)" -Description "Disabled $Date" 
} 
関連する問題