powershell - 如何在 AD 中删除计算机并将已删除的计算机通过电子邮件发送给自己
问题描述
我正在尝试从 AD 中删除 txt 文件中的机器列表。将它们删除我没有问题。但是,一旦它们被删除,我希望 PowerShell 向我的小组发送电子邮件,说这些机器已从 AD 中删除。谁能提供一些帮助?
我已经尝试过 If、try 和 statements,但似乎无法使其正常工作。
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
我需要这个来移除计算机,然后将移除结果通过电子邮件发送给我。希望这是足够的信息。任何帮助都会很棒。
解决方案
如果你像下面这样修改你的 foreach 循环,你的所有计算机都会在列表中。每次循环迭代都会向$output
数组中添加一个索引元素,其值为两个字符串之一。
$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
. 我使用-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
推荐阅读
- python - 我们如何将 groupby 的结果更改为数据框?
- java - 如何添加到累积字符串:
- arrays - Arduino:将字符数组加入字符串
- azure - 从同一租户中的另一个订阅访问本地数据网关资源
- python - tensorflow:未创建 XLA 设备,未设置 tf_xla_enable_xla_devices
- excel - countifs公式中的vba标准语法
- flags - Catchpoint 中的 QUIC - 我们可以添加 Chromium 标志以在 catchpoint 中启用 QUIC 吗?
- python - 如何安装具有可选/额外要求的 python 轮文件?
- arrays - 如何在具有相似数据的数组中搜索?迅速
- r - 使用 R 中的行名根据另一个数据框中的行顺序对数据框中的行进行重新排序