我是VBS脚本的新手,但是我准备监视动态AOS服务。
while ((Get-Service -name "AOS60*").status -eq "Running")
{Start-Sleep -s 30}
Send-MailMessage -From AOSmonitor@abc.com -To hub.pia@abc.com -Body "AOS Stopped" -Subject "AOS3 stopped" -SmtpServer 89.216.216.116
当我将其粘贴到PowerShell中并收到电子邮件时,它工作正常,但是当我将其保存到文件aos.vbs
中并尝试运行它时,就可以正常工作。
PS C:\> cscript aosMon.vbs Microsoft (R) Windows Script Host Version 5.8 Copyright (C) Microsoft Corporation. All rights reserved. C:\aosMon.vbs(1, 9) Microsoft VBScript compilation error: Syntax error
知道我做错了什么吗?
以类似的方式,当我尝试在Task Scheduler(基本任务,一次)中运行此脚本时,它停留在“运行”状态,并且没有发送电子邮件。
答案 0 :(得分:0)
PowerShell文件扩展名为.ps1
,应使用编码UTF8-bom
保存。 vbs
是Visual Basic脚本的缩写,它在任何方面都不是PowerShell的同义词。您应该能够将内容保存到filename.ps1
文件中,并直接从调度程序运行它。
filename.ps1
do {
Start-Sleep -Seconds 30
} while ((Get-Service -Name 'AOS60*').Status -eq 'Running')
$mailArgs = @{
From = 'AOSmonitor@abc.com'
To = 'hub.pia@abc.com'
Subject = 'AOS3 stopped'
Body = 'AOS Stopped'
SmtpServer = '89.216.216.116'
}
Send-MailMessage @mailArgs
从这里,您可以设置计划的任务。在Action
中:
Program/script:
%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\powershell.exe
Add arguments (optional):
-NoProfile -NonInteractive -File "PATH\TO\filename.ps1"
脚注:如果您遇到执行政策问题,可以添加
-ExecutionPolicy Bypass
(-File
之前的参数)可以解决该问题。