기본적으로 내가 가져온 스크립트는 가져 오는 CSV 및 RANDOM.DOMAIN의 사용자를 제외한 스프레드 시트의 모든 항목을 검색하는 스크립트입니다. 관리자 전자 메일 주소를 찾아 XYZ 사용자가 곧 만료 될 것이라고 알리는 관리자에게 자동화 된 전자 메일을 보냅니다.곧 만료되는 AD 사용자를위한 Powershell 스크립트
관리자 이메일을 어떤 이유로 사용할 수없는 경우 기본적으로 이메일이 저에게 전송됩니다. 이 스크립트는 잘 작동합니다.
내가 겪고있는 문제는 스프레드 시트의 여러 사용자 (또는 항목)에도 불구하고 각 관리자에게 하나의 이메일 만 전송되도록 설정하고 관리자로 나열하는 것입니다.
e.e. Joe Bloggs에 관리자 Aaron T가 있고 Jane Doe에게 관리자 Aaron T가 있다면 Aaron T는 각 사용자에게 하나씩 두 개의 전자 메일을 받게됩니다.
내 질문 :
만 그 관리자가 만료되어 그들에게보고 여러 사용자가있는 경우에도, 관리자 당 하나의 이메일을 보내기 위해서는 할 수있는 간단한 방법이 있을까요?
$datai = Import-Csv "Soon-to-expire User Accounts22.csv" | select 'Display Name',Manager,'Domain Name','Account Expiry Time'
Connect-QADService -Service another.DC | Out-Null
$expiringUsers = @{}
foreach ($i in $datai) {
$dn = $i.'Display Name'
$dn1 = $i.'Domain Name'
$man = $i.'Manager'
$aet = $i.'Account Expiry Time'
$subject = "Account about to expire: $dn"
$getmail = get-qaduser "$man" -LdapFilter '(mail=*)' | select mail
$emailAD = $getmail.mail
if ($man -eq "-" -or $man -like 'CN=*' -or $getmail -eq $null -or $man -eq "") {
$man = "Aaron T"
$getmail = get-qaduser "$man" -LdapFilter '(mail=*)' | select mail
$emailAD = $getmail.mail
}
if ($expiringUsers.Contains($emailAD)) {
$expiringUsers[$emailAD]["dn"] += $dn += "`n"
$expiringUsers[$emailAD]["aet"] += $aet += "`n"
$expiringUsers[$emailAD]["man"] += $man += "`n"
} else {
$expiringUsers[$emailAD] = @{
#"dn1" = $dn1
#"aet" = $aet
#"man" = $man
# "dn" = @($dn)
}
}
}
$expiringUsers | fC#as suggested
foreach ($emailAD in $expiringUsers.Keys) {
$dn = $expiringUsers[$emailAD]["dn"]
$dn1 = $expiringUsers[$emailAD]["dn1"]
$man = $expiringUsers[$emailAD]["man"]
$aet = $expiringUsers[$emailAD]["aet"]
$subject = "Account/s About to Expire!"
$content = @"
Hi,
$dn `n
$dn1 `n
$man `n
$aet `n
$emailAD `n
Technology Services
"@
Send-MailMessage -from "[email protected]" `
-To $emailAD `
-Subject $subject `
-Body $content `
-Priority high `
-smtpServer "relay.server"
#using this as a test instead of sending mass emais all the time
Write-Host $content
}
새 스크립트가 요청 된대로 업데이트되었습니다 ... 여전히 문제가 있습니다.
만료 예정인 여러 명의 사용자가 관리자에게 있어도 관리자 당 하나의 이메일 만 보내는 쉬운 방법이 있습니까?
답장을 보내 주셔서 감사합니다. 조금 밀집되어 있지만 코드가 올바르게 작동하지 않는 것 같습니다. 그것이 보내는 이메일에 모든 항목을보고하는 것 같습니다. 전혀 필터링하지 않는 것 같습니다. 당신이 말하는 것은 분명히 이해가됩니다! –
일부 모의 데이터로 테스트했을 때 효과적입니다 (여기에 광고가 없습니다). 첫 번째 루프 다음에'$ expiringUsers'의 내용을'$ expiringUsers | fc'. 문제가 해결되지 않는 경우 수정 된 코드로 질문을 업데이트하십시오. –
흠 .. 나는 약간의 놀이를 해봤 다. 이제 나는 다른 이슈들을 다루고있다 ... 나는 이메일에 멋지게 표시 할 수 없다. 한 블록, 나머지는 나머지) .. 나는 해시 테이블에 대해 좀 더 배워야한다고 생각한다. 거의 "foreach"문을 닫아야합니다. 제공하신 스크립트로 곧 내 질문이 업데이트됩니다. –