运行 远程服务器上使用 VBScript 的 BAT 文件。没有 psexec,并且作为不同的用户
Run BAT file on remote server using VBScript. No psexec, and as a different user
我正在尝试使用 VBScript 在远程服务器上执行 BAT 文件。进一步要求:
不允许 psexec
我需要脚本在另一个用户的权限下运行,而不是我自己工作站的权限
我查阅了这篇文章:https://docs.microsoft.com/en-us/windows/desktop/WmiSdk/connecting-to-wmi-remotely-with-vbscript
我知道如何创建连接,但我不知道如何使用相同的连接创建进程。
我相信这个解决方案非常接近,唯一的问题是我认为它冒充了当前 运行 计算机的用户:
strCommand = "C:\temp\copyall.bat"
strPath = "C:\temp"
strcomputer="."
process = "winmgmts:" & "{impersonationLevel=impersonate}!\" & strComputer & "\root\cimv2"
msgbox process
Set objWMIService = GetObject(process)
Set objProcess = objWMIService.Get("Win32_Process")
errReturn = objProcess.Create(strCommand, strPath, Null, intProcessID)
If errReturn = 0 Then
WScript.Echo "scan success: " & intProcessID
Else
WScript.Echo "scan fail: " & errReturn
End If
Microsoft 网站上的这个示例展示了如何正确创建连接,但我不知道如何使用该连接。
' Full Computer Name
' can be found by right-clicking My Computer,
' then click Properties, then click the Computer Name tab)
' or use the computer's IP address
strComputer = "FullComputerName"
strDomain = "DOMAIN"
Wscript.StdOut.Write "Please enter your user name:"
strUser = Wscript.StdIn.ReadLine
Set objPassword = CreateObject("ScriptPW.Password")
Wscript.StdOut.Write "Please enter your password:"
strPassword = objPassword.GetPassword()
Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator")
Set objSWbemServices = objSWbemLocator.ConnectServer(strComputer, _
"Root\CIMv2", _
strUser, _
strPassword, _
"MS_409", _
"ntlmdomain:" + strDomain)
Set colSwbemObjectSet = objSWbemServices.ExecQuery("Select * From Win32_Process")
For Each objProcess in colSWbemObjectSet
Wscript.Echo "Process Name: " & objProcess.Name
Next
答案可能就在眼前,但我现在看不到。想法?
连接到远程服务器后,只需获取 Win32_Process
对象并像在本地一样调用 Create()
方法。
Set objSWbemServices = objSWbemLocator.ConnectServer(...)
Set objProcess = objSWbemServices.Get("Win32_Process")
errReturn = objProcess.Create(strCommand, strPath, Null, intProcessID)
您想要 运行 的文件必须存在于本地远程服务器上才能工作。
另请注意,这通常需要远程系统的管理员权限。
我正在尝试使用 VBScript 在远程服务器上执行 BAT 文件。进一步要求:
不允许 psexec
我需要脚本在另一个用户的权限下运行,而不是我自己工作站的权限
我查阅了这篇文章:https://docs.microsoft.com/en-us/windows/desktop/WmiSdk/connecting-to-wmi-remotely-with-vbscript
我知道如何创建连接,但我不知道如何使用相同的连接创建进程。
我相信这个解决方案非常接近,唯一的问题是我认为它冒充了当前 运行 计算机的用户:
strCommand = "C:\temp\copyall.bat"
strPath = "C:\temp"
strcomputer="."
process = "winmgmts:" & "{impersonationLevel=impersonate}!\" & strComputer & "\root\cimv2"
msgbox process
Set objWMIService = GetObject(process)
Set objProcess = objWMIService.Get("Win32_Process")
errReturn = objProcess.Create(strCommand, strPath, Null, intProcessID)
If errReturn = 0 Then
WScript.Echo "scan success: " & intProcessID
Else
WScript.Echo "scan fail: " & errReturn
End If
Microsoft 网站上的这个示例展示了如何正确创建连接,但我不知道如何使用该连接。
' Full Computer Name
' can be found by right-clicking My Computer,
' then click Properties, then click the Computer Name tab)
' or use the computer's IP address
strComputer = "FullComputerName"
strDomain = "DOMAIN"
Wscript.StdOut.Write "Please enter your user name:"
strUser = Wscript.StdIn.ReadLine
Set objPassword = CreateObject("ScriptPW.Password")
Wscript.StdOut.Write "Please enter your password:"
strPassword = objPassword.GetPassword()
Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator")
Set objSWbemServices = objSWbemLocator.ConnectServer(strComputer, _
"Root\CIMv2", _
strUser, _
strPassword, _
"MS_409", _
"ntlmdomain:" + strDomain)
Set colSwbemObjectSet = objSWbemServices.ExecQuery("Select * From Win32_Process")
For Each objProcess in colSWbemObjectSet
Wscript.Echo "Process Name: " & objProcess.Name
Next
答案可能就在眼前,但我现在看不到。想法?
连接到远程服务器后,只需获取 Win32_Process
对象并像在本地一样调用 Create()
方法。
Set objSWbemServices = objSWbemLocator.ConnectServer(...)
Set objProcess = objSWbemServices.Get("Win32_Process")
errReturn = objProcess.Create(strCommand, strPath, Null, intProcessID)
您想要 运行 的文件必须存在于本地远程服务器上才能工作。
另请注意,这通常需要远程系统的管理员权限。