提示计算机名运行命令“SMC -stop”

时间:2013-07-04 10:40:10

标签: vbscript

所以,让我首先说我在编写脚本方面是无用的,所以请耐心等待。

我们在整个企业中使用Symantec Endpoint Protection(SEP),Citrix XenServer 5.5和SEP 11似乎存在问题,如果没有警告,SEP将几乎停止对VM的所有访问。通常有文件和打印或打印服务器VM,因此要么停止所有站点打印,要么停止所有文件访问。

当它发生时你可以ping一个虚拟机(所以Nagios认为它没问题)和许多其他检查,如SNMP轮询等仍然有效(所以HP SIM认为没问题)但任何域用户的RDP访问和登录都被拒绝所以你必须使用XenCenter并使用本地帐户登录。登录后,您需要做的就是运行'SMC -stop'然后'SMC -start'来停止并启动所有相关的SEP服务。

现在我们有一个24/7的人员服务台,但他们不允许访问XenCenter,因此呼叫直接转到三级支持,凌晨2点你真的不想被唤醒简单。

因为您仍然可以远程运行命令,我会想出某种形式的脚本(任何语言),它只是提示输入计算机名称,输入后运行“ SMC -Stop ” ,暂停15秒,然后运行' SMC -start '并且Echo的“Symantec Endpoint Protection Services重新启动”将是完美的,并允许我我的队友偶尔会睡个好觉。

到目前为止,我已经拿出了下面的脚本,但我还没有机会测试它,所以甚至不确定它是否能正常工作(我确实说我在编写脚本时很糟糕)

strComputer = InputBox("Name of computer to stop SEP Services on:", "Run SMC -stop")

If strComputer = "" Then
    Wscript.Quit
End If

Dim oShell
Set oShell = WScript.CreateObject ("WScript.Shell")
oShell.run "cmd.exe /c SMC -Stop"

MsgBox "Waiting 15 Seconds before restarting SEP Services"
WScript.Sleep 15000

Set oShell = WScript.CreateObject ("WScript.Shell")
oShell.run "cmd.exe /c SMC -Start"
Set oShell = Nothing

MsgBox "Symantec Endpoint Protection Services Restarted"*

Apreceate给予任何帮助。

1 个答案:

答案 0 :(得分:0)

您的脚本将在本地计算机上运行该命令,而不是在远程计算机上运行。要通过VBScript在远程计算机上执行命令,请尝试WMI

computer = "..."

Sub RunRemoteCommand(cmd, host)
  Set wmi = GetObject("winmgmts://" & host & "/root/cimv2")
  rc = wmi.Get("Win32_Process").Create(cmd, , , pid)
  If rc <> 0 Then
    WScript.Echo "Running '" & cmd & "' on " & computer & " failed (" & rc & ")."
    WScript.Quit 1
  End If
End Sub

RunRemoteCommand "smc -stop", computer
WScript.Sleep 15000
RunRemoteCommand "smc -start", computer

您可以使用InputBox功能提示输入计算机名称:

computer = InputBox("Enter computername:")

虽然通过PsExec运行批处理脚本可能更简单:

C:\>psexec \\computer -c restart_sep.cmd

restart_sep.cmd看起来像这样:

@echo off
smc -stop
ping -n 16 127.0.0.1 >nul
smc -start

选项-c告诉PsExec将批处理文件从本地主机复制到远程计算机,然后再在其中执行。 ping -n 16 127.0.0.1模拟sleep 15ping在两个回应请求之间放置约1秒的延迟。