我正在尝试从AD中删除txt文件中的计算机列表。我没有问题将其删除。但是,一旦删除它们,我希望PowerShell向我的小组发送电子邮件,说这些计算机已从AD中删除。谁能提供帮助?
我尝试了If,try和statement,但似乎无法正常工作。
Get-Content 'c:\temp\Remove AD Computers.txt' | % { Get-ADComputer -Filter { Name -eq $_ } } | Remove-ADObject -Recursive -Whatif
$Computerlist = Get-Content 'c:\temp\Remove AD Computers.txt'
ForEach($Computer in $Computerlist)
{
try{
Get-ADComputer $Computer -ErrorAction Stop
$output = "$Computer still exsists in AD."
}
catch{
$output = "$Computer has been removed from AD."
}
}
Write-Host $output
Send-MailMessage -From 'ADComputersRemoved@redgold.com' -To 'support@redgold.com' -Subject 'AD Computers removed' -Body "$output" -SmtpServer smtp.domain.com
我需要这样做才能删除计算机,然后通过电子邮件将删除结果发送给我。希望这是足够的信息。任何帮助都很棒。
答案 0 :(得分:0)
如果您按照以下方式修改foreach循环,则列表中将包含所有计算机。每次循环迭代都会向索引$output = ForEach($Computer in $Computerlist)
{
try{
Get-ADComputer $Computer -ErrorAction Stop
"$Computer still exsists in AD."
}
catch{
"$Computer has been removed from AD."
}
}
数组中添加一个索引元素,其值应为两个字符串之一。
$output
由于-body
将是一个字符串数组,因此在将其传递到Send-MailMessage
的{{1}}参数时,需要将该字符串制成。我将-join
运算符与CRLF字符一起使用。您可以随意使用。 $output | out-string
将完成类似的工作。
Send-MailMessage -From 'ADComputersRemoved@redgold.com' -To 'support@redgold.com' -Subject 'AD Computers removed' -Body ($output -join "`r`n") -SmtpServer smtp.redgold.com