通过wmi远程执行脚本的两个方法
(2014-09-22 00:04:07)
					
											标签:
																				
                            vbawmi | 
					分类: WMI | 
WMI 提供两种方式去操作远程计算机,
一种是通过WSHController对象来操作,需要设置允许远程WSH,
,另一种是通过WbemScripting.SWbemLocator对象来操作
关于权限的参考链接
http://blog.csdn.net/seraph5186/article/details/2991199
下边的脚本甚至在本地都执行不了,
Set oController = CreateObject("WSHController")
Set oProcess = oController.CreateScript("V:\a.vbs",
"192.168.1.6")
oProcess.Execute
While oProcess.Status <> 2
 
Wend
WScript.Echo "Done"
下边的脚本可以在本地运行...,xp环境下只要是同名管理员,是成功的!!另外在win2000环境下,创建的程序不隐藏,但在xp环境下则是隐藏的!
strComputer = "atl-ws-01"
Set objWMIService = GetObject("winmgmts://" & strComputer &
"/root/cimv2:Win32_Process")
errReturn = objWMIService.Create("calc.exe", Null, Null,
intProcessID)
 
| 
 参数  | 
 说明  | 
| 
 cmd.exe /c md c:/newfolder  | 
 用于创建新文件夹的命令行命令。注意,必须在命令中包含 cmd.exe。这是因为 md 要依赖于 cmd.exe;它不是一个单独的可执行文件。从原理上说来,现在我们所作的就是告诉 WMI 启动 cmd.exe,然后,在这个外壳运行之后,执行 md 命令。  | 
| 
 Null  | 
 用于设置要处理的工作文件夹。由于这和我们的需要无关,因此我们只传递一个 Null 参数。  | 
| 
 Null  | 
 表示进程的启动配置。我们并不关心这个脚本的启动配置信息,因此我们又传送另一个 Null 参数。  | 
| 
 intProcessID  | 
 一个用于存储我们创建的进程的进程 ID 的“输出”参数。由于 md 命令大约只需要一秒种就可以完成,因此这里我们并不需要太多用到进程 ID。但如果您正在执行的任务需要几分钟才能完成呢?通过了解进程 ID,我们就可以完成类似于监视任务的进度、然后在进程结束后收到通知这样的事情。  | 
http://www.docin.com/p-242322536.html&endPro=true
参考,关于隐藏窗口的代码... 
Private Sub
Command1_Click() 
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLEVEl=impersonate}!\\" & strComputer & "\root\cimv2")
Set objStartup = objWMIService.Get("Win32_ProcessStartup")
Set objConfig = objStartup.SpawnInstance_
objConfig.ShowWindow = HIDDEN_WINDOW
Set objProcess = GetObject("winmgmts:root\cimv2:Win32_Process")
errReturn = objProcess.Create("程序路径", Null, objConfig, intProcessID)
End Sub

加载中…