我有一个脚本,可以将某些输入ActiveDirectory组导出到单独的csv文件中。
当我运行脚本时,它会要求我用“”分隔组,即:group1 group2,然后保存到group1.csv和group2.csv中。
下一步是输入电子邮件地址,然后询问是否发送电子邮件。如果我尝试使用单个组,则效果很好,但不能用于多个组
这是脚本:
param (
[Parameter(Mandatory, ValueFromPipelineByPropertyname)]
[ValidateNotNullOrEmpty()]
[string]$GroupName,
[Parameter(Mandatory, ValueFromPipelineByPropertyname)]
[ValidateNotNullOrEmpty()]
[string]$YourEmail
)
Remove-Item –path c:\report\* -include *.csv
$allGroupNames = $GroupName -split " "
foreach( $GN in $allGroupNames ) {
Get-ADGroupMember -identity “$GN” | select-object SamAccountName | Export-csv -path C:\Report\$GN.csv -NoTypeInformation
}
Write-host "Would you like to send the file via email?(Default is No)" -ForegroundColor Yellow
$Readhost = Read-Host " ( y / n ) "
Switch ($ReadHost)
{
Y {Write-host ;"Sending file "}
N {Write-Host ;"Email sending declined/ report(s) saved"; exit}
Default {Write-Host ;"Default, No and exit"; Exit}
}
$User = "user@company.com"
$File = "C:\Report\UkPrinterPwd.txt" #Secured password file
$cred=New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $User, (Get-Content $File | ConvertTo-SecureString)
$EmailTo = $YourEmail
$EmailFrom = "user@company.com"
$Subject = "AD Group Export"
$Body = "Good Morning / Afternoon, Please find attached your CSV File requested from Active Directory."
$SMTPServer = "smtp.gmail.com"
$AttachedFile = "C:\Report\$Groupname.csv"
$SMTPMessage = New-Object System.Net.Mail.MailMessage($EmailFrom,$EmailTo,$Subject,$Body)
$attachment = New-Object System.Net.Mail.Attachment($AttachedFile)
$SMTPMessage.Attachments.Add($attachment)
$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 587)
$SMTPClient.EnableSsl = $true
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential($cred.UserName, $cred.Password);
$SMTPClient.Send($SMTPMessage)
谢谢。