.vbs 文件和任务计划程序中的获取服务

Get-Service in .vbs file and Task Scheduler

我对 VBS 脚本完全陌生,但是我准备了一个来监视 Dynamics 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

知道我哪里做错了吗?

当我在任务计划程序(基本任务,一次)中尝试 运行 这个脚本时,它会保持类似的方式 运行 并且没有发送电子邮件。

PowerShell 文件扩展名为 .ps1,应使用 UTF8-bom 编码保存。 vbs 是 visual basic script 的缩写,它 而不是 在任何方面都是 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 之前)来解决这个问题。