我目前正在使用 PowerShell 和任務規劃程式來為我目前工作的企業自動執行任務。該腳本更新列表,最好每 10 分鐘運行一次。我們用來運行這個重複腳本的電腦可能有點不穩定,並且會隨機關閉。我正在嘗試找到一種在運行腳本的計算機離線時獲取警報的方法。
我想做到這一點的主要方法是在每次程式運行時設定通知,然後讓第二個腳本檢查該通知。如果缺少指示腳本未運行的通知,它會發送警報。我找到了一個答案,可以讓我找到答案,但我認為如果機器關閉,它就不起作用。
感謝您花時間幫助解決這個問題。
答案1
我同意其他評論。您需要第二台機器來執行連接測試或與運行其他程式碼的機器進行類似的測試以檢測故障。以下是一個範例 powershell 腳本,如果沒有從另一台電腦收到成功的 ping 回應,該腳本會向您發送電子郵件。以下程式碼假設您使用 0ffice365 線上郵件/交換,但可以變更為您使用的任何內容。
$testComputer = ping 1.1.1.1 -n 1 | select-string "Sent" #replace the 1.1.1.1 with your server that fails
if($testComputer -match 'Sent = 1')
{
write-host("Connection to computer running scheduled task is good.")
}
else
{
write-host("Connection to computer running scheduled task has failed. Check to see if it is offline.")
$computerParamsFailed = "Connection to computer running scheduled task has failed. Check to see if it is offline."
$username="[email protected]" #replace with email
$password=ConvertTo-SecureString "PASSWORDHERE"-AsPlainText -Force #replace what is in quotes with your email password
$mycredentials = New-Object System.Management.Automation.PSCredential ($username, $password)
Send-MailMessage -To [email protected] -subject "Computer has gone offline." -body $computerParamsFailed -UseSsl -Port 587 -SmtpServer smtp.office365.com -From $username -Credential $mycredentials
#change "to" email value
}
可以將其設定為在另一台電腦上每 10 分鐘運行一次。如果它偵測到連接,則不會執行任何操作。如果沒有得到回复,它會向您發送一封電子郵件。
答案2
我同意沃斯韋勒的觀點。需要另一台機器來監視執行該腳本的機器的狀態。在這種情況下,如果有一台機器足夠可靠來監視第一台機器,那麼您不妨只在該機器上執行腳本。最佳解決方案...修正導致運行腳本的電腦崩潰的問題或乾脆更換它。