远程安装应用程序

最近接到一个差事:写一个远程安装应用程序的东西。因为有个工程是用于网络管理的,需要在每台终端上安装一个客户端。开始的时候考虑用NetBios编程,但是遇到些问题无法解决,应该是本人功力还不够。后来发现WMI可以实现这样的功能,不但可以远程运行应用程序,还可以把本地的文件拷贝到远程机器上去,当然前提是远程机器必须有共享目录。因为不同操作系统上的WMI的接口可能不同,所以不能保证可移植。

运行脚本的方法是将下列脚本拷贝到记事本中,再将其保存为vbs的后缀名,然后在控制台下运行:

cscript 脚本文件名

或者双击脚本文件直接运行

'-----------------------------------------------------------
'远程执行
strComputer = "192.168.0.30"

Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator")
Set objSWbemServices = objSWbemLocator.ConnectServer _
    (strComputer, "root/cimv2", "fabrikam/administrator",

"85558418")

Set objNewProcess = objSWbemServices.Get("Win32_Process")

'objWMIServices.Security_.ImpersonationLevel = 3 

Error = objNewProcess.Create _
    ("c:/tmp.bat", null, null, _
        intProcessID)
Wscript.Echo Error
Wscript.Echo intProcessID

执行完如果没有返回错误,可以用下列脚本枚举远程机器上运行的进程


'------------------------------------------------------------
'枚举远程进程
strComputer = "192.168.0.30"

Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator")
Set objSWbemServices = objSWbemLocator.ConnectServer _
    (strComputer, "root/cimv2", "fabrikam/administrator",

"85558418")

Set colSwbemObjectSet = _
    objSWbemServices.ExecQuery("Select * From Win32_Process")
For Each objProcess in colSWbemObjectSet
    Wscript.Echo "Process Name: " & objProcess.Name
Next

因为windows的平台上有默认共享的磁盘,所以把需要运行的应用程序可以拷贝到目的机器上的C$下,当然也可以是其他的共享文件夹


'------------------------------------------------------------
'远程拷贝文件
strComputer = "192.168.0.30"
Const OverwriteExisting = TRUE

Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator")
Set objSWbemServices = objSWbemLocator.ConnectServer _
    (strComputer, "root/cimv2", "fabrikam/administrator",

"85558418")

'Set objFSO = objSWbemServices.Get("Scripting.FileSystemObject")
Set objFSO = CreateObject("Scripting.FileSystemObject")
objFSO.CopyFile "C:/va.log", _
    "//" + strComputer + "/C$/", OverWriteExisting

拷贝后可以运行下面的脚本,检查目的机器上是否存在该文件
'--------------------------------------------------------------
'搜索特定扩展名
strComputer = "192.168.0.30"
Const OverwriteExisting = TRUE

Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator")
Set objSWbemServices = objSWbemLocator.ConnectServer _
    (strComputer, "root/cimv2", "fabrikam/administrator",

"85558418")

Set colFiles = objSWbemServices.ExecQuery _
    ("Select * from CIM_DataFile where Extension = 'log'")
For Each objFile in colFiles
    Wscript.Echo objFile.Name
Next

因为我需要安装的应用程序很小,而且只是注册一个dll,所以上面的脚本足够满足我的需求,而且该脚本是为网络管理员编写的,所以要得到远程机器上的管理员的帐号和密码并不是什么难事。

如果需要更多的信息,可以去 脚本中心 获取。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值