是否有一种从VBS脚本中访问网络共享的好方法,使用备用凭据(而不是运行VBS脚本的凭据)?
目的是执行两项任务:
据我所知,FSO(Scripting.FileSystemObject)不在图片中,因为它始终使用应用程序的凭据运行 - 这将是本地机器用户。(?)
我在google搜索准备批处理文件(或扩展调用“cmd.exe”)时发现的唯一可行的方法,该文件使用“net use”提供远程共享凭据,然后使用robocopy复制文件等等,来自同一个命令shell“会话”。这可以用于将文件从本地驱动器复制/部署到远程共享,但是以这种方式进行任何类型的文件系统浏览(就像使用FSO一样)都会非常复杂和脆弱。
我考虑过的另一种可能性涉及两个脚本会话 - 您调用脚本(在命令行中提供备用凭据)并运行cmd.exe会话,该会话首先执行“net use”以映射远程共享到一个临时的本地驱动器,然后以“实际做东西”模式运行并使用FSO,然后当它完成时(返回cmd.exe shell)再次断开临时驱动器的“net use”。这是笨重的(多个窗口,临时驱动...),我甚至不确定它会工作。
有人知道这两种方式,还是知道可行的替代方案? (坚持使用Windows 2000机器上的VBScript / WScript - 没有PowerShell!)
答案 0 :(得分:32)
事实证明它确实如此,以下示例代码非常好用(无需设置临时网络驱动器):
ServerShare = "\\192.168.3.56\d$"
UserName = "domain\username"
Password = "password"
Set NetworkObject = CreateObject("WScript.Network")
Set FSO = CreateObject("Scripting.FileSystemObject")
NetworkObject.MapNetworkDrive "", ServerShare, False, UserName, Password
Set Directory = FSO.GetFolder(ServerShare)
For Each FileName In Directory.Files
WScript.Echo FileName.Name
Next
Set FileName = Nothing
Set Directory = Nothing
Set FSO = Nothing
NetworkObject.RemoveNetworkDrive ServerShare, True, False
Set ShellObject = Nothing
Set NetworkObject = Nothing