当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] PowerShell:如果域控制器已关闭,请提醒我

作者:精品下载站 日期:2024-12-14 07:22:45 浏览:16 分类:玩电脑

PowerShell:如果域控制器已关闭,请提醒我


周围有足够多的监控软件。他们中的大多数都非常有帮助并且做得非常出色。对于那些手头没有此类软件的人来说,只有两种选择:不使用它或自己创建一个脚本。如果您想通过使用 ICMP Echo 来检查域控制器等来实施监视,那么本文适合您。

目标

目标是在对一个或多个域控制器执行 ping 操作失败时通知管理员。此通知可以通过电子邮件、事件日志中的条目或其他任何方式来完成。在本文中,管理员将收到电子邮件通知。更具体地说,这样:

[玩转系统] PowerShell:如果域控制器已关闭,请提醒我

剧本

对于我们当中速度快的人来说,完整的脚本就在开头。我们稍后会分解细节。

$dcs=(Get-ADDomainController -Filter *).Name
foreach ($item in $dcs) {
 Try
 {
 Test-Connection $item -Count 1 -ErrorAction Stop | Out-Null
 }
 Catch
 {
 $Site=(Get-ADDomainController $item).Site
 $IP= (Get-ADDomainController $item).IPv4Address
 $date=Get-Date -Format F
 Send-MailMessage -From [email protected] -To [email protected] -SmtpServer EX01 -Subject "Site: $Site | $item is down" -Body "$IP could not be reached at $date.`n`nIf you receive this message again in 15 minutes, $item is probably down."
}
}

第一件事是检索所有域控制器计算机名。然后Try - Catch 语句对所有计数为1 的DC 执行ping 操作,但没有任何输出。 (这意味着每个 dc 执行一次 ping)。然后,所有可能出现故障的 DC 都会被捕获,并且它们的站点名称和 IP 地址将被保存。我就不解释 $date 了;-)。毕竟,管理员会收到有关故障 DC 的详细信息的电子邮件通知。

请注意,您的邮件服务器必须配置为允许来自运行脚本的计算机发送电子邮件。

确保运行该脚本的计算机已安装远程服务器管理工具 (RSAT)。您将需要它来执行 Get-ADDomainController 命令。这是安装它的命令:

Install-WindowsFeature RSAT-ADDS

创建每 15 分钟运行一次的计划任务

我们的下一个任务是在计划任务中实现该脚本,例如每 15 分钟运行一次。因此,每个域控制器将在 15 分钟的时间内进行检查。

打开 Windows PowerShell 或 PowerShell ISE。运行以下代码来创建计划任务(您必须更改脚本名称和位置、计划任务的名称、时间跨度和用户帐户):

$Action=New-ScheduledTaskAction -Execute "powershell -Argument -Noprofile -WindowStyle Hidden -ExecutionPolicy Bypass -File C:\Temp\script.ps1"
$Trigger=New-ScheduledTaskTrigger -Once -At (Get-Date) -RepetitionInterval (New-TimeSpan -Minutes 15)
$Set=New-ScheduledTaskSettingsSet
$Principal=New-ScheduledTaskPrincipal -UserId a-d\administrator
$Task=New-ScheduledTask -Action $Action -Trigger $Trigger -Settings $Set -Principal $Principal
Register-ScheduledTask -TaskName "Test DCs" -InputObject $Task -Force

打开taskschd.msc 并检查您的设置。进行试运行。最后的运行结果应该是 0x0。

[玩转系统] PowerShell:如果域控制器已关闭,请提醒我

[玩转系统] PowerShell:如果域控制器已关闭,请提醒我

推荐程序

为了进行测试,我建议在其中一台 DC 上禁用 ICMP Echo,而不是关闭计算机 ?

[玩转系统] PowerShell:如果域控制器已关闭,请提醒我

[玩转系统] PowerShell:如果域控制器已关闭,请提醒我

然后等待 15 分钟或立即运行任务。

如果您没有收到电子邮件,我建议您修改脚本并替换 Send-MailMessage 命令以排除问题出在邮件服务器上的可能性。

您只需将 Send-Mailmessage 替换为 Set-Content 即可将错误存储在文件中。

它可能看起来像这样:

Set-Content C:\Temp\Log\log1.txt -Value "$item is down"

监控愉快!

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯