所以,让我首先说我在编写脚本方面是无用的,所以请耐心等待。
我们在整个企业中使用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给予任何帮助。
答案 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 15
(ping
在两个回应请求之间放置约1秒的延迟。