【问题标题】:Get-Service in .vbs file and Task Scheduler [closed].vbs 文件和任务计划程序中的获取服务 [关闭]
【发布时间】:2019-01-01 01:09:28
【问题描述】:

我是 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 脚本宿主版本 5.8 版权所有 (C) 微软公司。版权所有。 C:\aosMon.vbs(1, 9) Microsoft VBScript 编译错误:语法错误

知道我做错了什么吗?

当我尝试在任务计划程序(基本任务,一次)中运行此脚本时,它保持在运行状态并且没有发送电子邮件。

【问题讨论】:

  • vbs 和 powershell 不是一回事,这里有一个 powershell 脚本,因此它可以与 powershell 一起使用,而不是 cscript
  • 只是一个简单的问题。您想从 VB 运行 Powershell 脚本而不只是运行 Powershell script directly as a task 的任何原因?
  • @TheIncorrigible1 OP 说:It works fine when I paste it into Powershell and I get an email, but when I save it into file aos.vbs and try to run it。请仔细阅读问题
  • @arco444 呸,好收获。这么说就很明显了
  • 有更好的方法来完成你正在做的事情。每 30 秒检查一次服务是否仍在运行是愚蠢的。寻找EventId=7036 并在任务计划程序中设置一个触发器来监控它。您可以使用这样的自定义任务计划程序查询<QueryList><Query Id="0" Path="System"><Select Path="System">*[System[(Level=4 or Level=0) and (EventID=7036)]] and *[EventData[Data[@Name='param1'] and (Data='Microsoft Dynamics AX Object Server 6.3$01-Your_AOS_ServiceName')]] and *[EventData[Data[@Name='param2'] and (Data='running' or Data='stopped')]]</Select></Query></QueryList>

标签: powershell vbscript scheduled-tasks dynamics-ax-2012


【解决方案1】:

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 之前)来解决这个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-03
    • 2015-03-14
    • 1970-01-01
    • 2020-07-07
    • 2021-02-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多