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