"Console output" is pointless in a scheduled task.
$privilegedgroupnames = 'Domain Admins', 'Schema Admins', 'Administrators', 'Group Policy Creator Owners'
Write-Host "Users created on the last 30 days!" | Out-String
$When = (Get-Date).Date.AddDays(-30)
$Alerts = Get-ADUser -Filter { whenCreated -ge $When } -Properties whenCreated |
ForEach-Object {
$user = $_.UserPrincipalName
Get-ADPrincipalGroupMembership $.distinguishedName |
ForEach-Object {
if ($privilegedgroupnames -contains $_.name) {
[PSCustomObject]@{
UserName = $user.samaccountname
PrivilegedGroup = $_.name
}
}
}
}
if ($Alerts){
$body = @"
These users have been found in privileged groups:
$($Alerts | Out-String)
"@
Send-MailMessage -To '******@yourcomain.tld' -From "******@yourdomain.tld" -SmtpServer your.emial.server.yourdomain.tld
}