여러 OU의 사용자를 각 OU 이름 CSV로 내보내야 합니다.

여러 OU의 사용자를 각 OU 이름 CSV로 내보내야 합니다.

2018년 1월 이전에 로그인하지 않은 사용자 목록을 수집하여 단일 CSV로 출력하는 스크립트가 있습니다.

OU1 사용자 출력이 ou1.csv로 이동하고 ou2 사용자 출력이 OU2.csv로 이동하는 것과 같은 출력이 필요합니다.

여기 아래 스크립트가 있습니다.

$Today = (get-date -f MM-dd-yyyy)

$OUs = (Get-Content E:\DATA\Password lastset before jan 2018\OU.txt)
foreach ($OU in $OUs)
{

  Get-ADUser -filter {Enabled -eq $true} -SearchBase $OUs -Properties DisplayName,SamAccountName,distinguishedname,cn,PasswordNeverExpires,passwordlastset,LastLogonDate,EmailAddress |
  where{ $_.PasswordNeverExpires -eq $false } | where{$_.passwordlastset -le ((get-date).adddays(-90))} |
  Where{ $_.LastLogonDate -le ((get-date).adddays(-240))} |
  select samaccountname, Displayname, 
@{n='ParentContainer';e={$_.distinguishedname -replace '^.+?,(CN|OU.+)','$1'}},@{Name="PasswordAge";`
Expression={((Get-Date)-$_.PasswordLastSet).days}}, @{N="LastLogonDate";E={$_.LastLogonDate}},@{n="EmailAddress";E={$_.EmailAddress}} |
  Export-CSV "E:\DATA\PasswordPolicy\ADUser lastlogon on or before Jan 2018 report-$Today.csv" -NoTypeInformation -Encoding UTF8

}
$Body = "ADUser lastlogon before Jan 2018"

Send-mailmessage -to "[email protected]" -from [email protected] -SmtpServer usvasmtp -Body $Body -subject "OU1 ADUser lastlogon on or before Jan 2018 - Report For $Today" -Attachments "E:\DATA\PasswordPolicyEmail\OU1-$Today.csv"

Send-mailmessage -to "[email protected]" -from [email protected] -SmtpServer usvasmtp -Body $Body -subject "OU2 ADUser lastlogon on or before Jan 2018 - Report For $Today" -Attachments "E:\DATA\PasswordPolicyEmail\OU2-$Today.csv"

답변1

바꾸다:

Export-CSV "E:\DATA\PasswordPolicy\ADUser lastlogon on or before Jan 2018 report-$Today.csv" -NoTypeInformation -Encoding UTF8

와 함께:

Export-CSV $path -NoTypeInformation -Encoding UTF8

추가하다:

$path = "E:\DATA\PasswordPolicy\" + $ou + ".csv"

foreach 루프의 상태에서

OU.txt 내에 전체 DN을 지정하는 경우 $($ou.split("ou=")[-1]) Searchbase를 수정하는 것과 유사한 방법을 사용할 수 있습니다.-SearchBase $OU

관련 정보