2014-04-14 2 views
0

다음 코드를 사용하여 사용자의 CSV 파일을 만들 수 있지만 위의 루프에서 삭제되는 사용자 만 채워지기를 원합니다. 두 가지 방법을 통합하는 방법을 보지 못했습니다. 기본적으로 삭제 된 90 일 이상 된 모든 사용자를 가져온 다음 사용자 정보가 CSV에 저장됩니다. 사전에활성 디렉토리에서 삭제 된 사용자의 CSV 파일 만들기

$OU='OU=Users,OU=Test,DC=corporate,DC=domain,DC=com' 

$LISTOFACCOUNTS=Get-ADUser -Property lastlogondate -SearchBase $OU -Filter {lastLogonDate -lt $NumberDays} 

$LISTOFACCOUNTS | DISABLE-ADACCOUNT -WhatIf 

$LISTOFPOTENTIALDELETES=Get-ADUser -SearchBase $OU -Property Lastlogondate -Filter` {lastlogondate -lt $DeleteDate} 

FOREACH ($USER in $LISTOFPOTENTIALDELETES) { 

    IF (($USER.Notes -notlike '*'+$OVERRIDE+'*') -and ($USER.Description -notlike` '*'+$OnLeave+'*')) 
    { 
     WRITE-HOST $USER.SamAccountName 'Deleted' 
     REMOVE-ADOBJECT $USER.SamAccountName -whatif 
    } 
    ELSEIF ($USER.Notes -like '*'+$OVERRIDE+'*') 
     { 
      WRITE-HOST $USER.SamAccountName 'Not removed due to Administrative Override' 
     } 
     ELSE 
     { 
      WRITE-HOST $USER.SamAccountName 'Not removed - Presently on Leave' 
     } 
} 

$memberOf = @{n='MemberOf';e={ ($_.MemberOf -replace '^CN=([^,]+).+$','$1') -join ';' }} 
$LastLogonDays = @{N='Last Logon Days'; E={$($(Get-Date) - ` $([DateTime]::FromFileTime($_.LastLogon))).Days}} 
$LastLogon = @{N='LastLogon'; E={[DateTime]::FromFileTime($_.LastLogon)}} 
$Mail = @{ Name = 'mail'; Expression = { $_.mail -join ';'; }; } 
$Description = @{N='Description'; E={$_.description -join ';'; }; } 

Get-ADUser -Filter * -SearchBase $OU -Properties * | Select Enabled, SAMAccountName, ` CanonicalName, Displayname,Givenname, Surname, Department, ` 
ProfilePath, HomeDrive, $Description, $LastLogonDays, $LastLogon, $mail, $memberOf | 
Export-CSV "E:\Temp\_DisabledUserList.csv" 

건배

답변

0

빌드이 삭제되기 전에 사용자 개체와 목록 :

$deletedUsers = @() 
foreach ($USER in $LISTOFPOTENTIALDELETES) { 
    if ($USER.Notes -notlike ...) { 
    Write-Host $USER.SamAccountName 'Deleted' 
    $deletedUsers += $USER 
    Remove-ADObject $USER.SamAccountName -WhatIf 
    } else { 
    ... 
    } 
}

과 CSV에 그 목록을 내보낼 :

$deletedUsers | select SamAccountName, ... | Export-Csv 'C:\Temp\deleted.csv' 

사이드 참고 : Remove-ADObject 대신 Remove-ADUser을 사용하여 AD 사용자를 삭제하는 것이 좋습니다.

+0

방금 ​​IF 문이 내 코드에서 잘못되었음을 확인 했으므로 양쪽 모두가 참인 시나리오가 없으므로 '- 또는 -'가 없어야합니다. 건배 Ansgar 좋은 작품! –

관련 문제