Batch file vbs使用凭据从网络执行

Batch file vbs使用凭据从网络执行,batch-file,vbscript,Batch File,Vbscript,我需要使用凭据从本地网络运行setup.exe Set shell = WScript.CreateObject("Wscript.Shell") shell.Run("\\192.168.0.100\Setup\setup.exe"), 0 , True 我可以用一个bat文件来实现这一点,但问题是,我不希望在执行时出现cmd窗口 因此,从我所读到的内容来看,一个好的选择是像这样使用vbs脚本,除非我找不到一种方法将其与凭据一起使用 Set shell = WScript.CreateObj

我需要使用凭据从本地网络运行setup.exe

Set shell = WScript.CreateObject("Wscript.Shell")
shell.Run("\\192.168.0.100\Setup\setup.exe"), 0 , True
我可以用一个bat文件来实现这一点,但问题是,我不希望在执行时出现
cmd
窗口

因此,从我所读到的内容来看,一个好的选择是像这样使用
vbs
脚本,除非我找不到一种方法将其与凭据一起使用

Set shell = WScript.CreateObject("Wscript.Shell")
shell.Run("\\192.168.0.100\Setup\setup.exe"), 0 , True
基本上我需要的是vbs中此批处理脚本的等价物:

net use Z: \\192.168.0.100\sh /user:user password /persistent:yes
start /d "Z:\Setup" setup.exe   

PSExec是您想要的:

像这样:

Set shell = WScript.CreateObject("Wscript.Shell")
shell.Run("psexec.exe -u User -p Password -accepteula \\192.168.0.100\Setup\setup.exe"), 0 , True
文件:

使用PsExec

用法:psexec[\computer[,computer2[,…]|@file][-u user[-p psswd][n s][r servicename][h][l][s |-e][x][i[session]][-c [-f |-v][-w目录][d][-][-a n,n,…]cmd[arguments]

-u指定用于登录到远程计算机的可选用户名

-p为用户名指定可选密码。如果忽略此项 系统将提示您输入隐藏密码

-accepteula此标志禁止显示许可证对话框

您可以这样做:

Set WshNetwork = WScript.CreateObject("WScript.Network")
WshNetwork.MapNetworkDrive "Z:", "\\192.168.0.100\sh", True, user, password

Set shell = WScript.CreateObject("Wscript.Shell")
shell.CurrentDirectory = "Z:\Setup"
shell.Run("setup.exe"), 0 , True


注意:如果Z:已映射,MapNetworkDrive将失败。您需要处理该问题。

请将其删除,改用psexec。请参阅答案。这是否意味着我必须在需要运行setup.exe文件的每台计算机上复制/安装PsTools?您只需要psexec.exe可执行文件。您可以将其放在某个共享位置,也可以使用base64 encode exe然后将base64编码信息放入脚本中。任何一种方法都可以。这是我一直在寻找的。是的,映射是一个问题,但我需要一种方法来在安装程序运行后取消映射驱动器。如果您单击“取消”而不是“运行setup.exe”,也会出现严重的vbs错误,但这也是另一种情况。要取消映射,只需使用RemoveNetworkDrive方法,您应该联机查找WSH参考以获取更多详细信息。我在
shell.Run
之后尝试了此
WshNetwork.RemoveNetworkDrive“Z:
,但它似乎不起作用。错误是什么?您尝试过
WshNetwork.RemoveNetworkDrive“Z:,True,True