如何在AD中删除计算机并通过电子邮件将已删除的计算机发送给自己

时间:2019-04-10 15:16:52

标签: powershell active-directory

我正在尝试从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

我需要这样做才能删除计算机,然后通过电子邮件将删除结果发送给我。希望这是足够的信息。任何帮助都很棒。

1 个答案:

答案 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