vbscript - 从VBScript中访问网络共享,例如FileSystemObject

标签 vbscript network-shares

是否有一种很好的方法可以使用替代凭据(而不是运行VBS脚本所使用的凭据)从VBS脚本中访问网络共享?

目的是执行两项任务:

  • 以编程方式导航一个远程共享文件结构,以确认存在几个远程文件,并在另一个(均为远程)
  • 上复制一个文件
  • 将文件从本地驱动器(使用本地用户名/权限访问)复制到远程驱动器(通过备用凭据访问)

  • 据我所知,FSO(Scripting.FileSystemObject)不存在,因为它始终使用使用它的应用程序的凭据运行-这将是本地计算机用户。(?)

    我在谷歌搜索准备一个批处理文件(或对“cmd.exe”的扩展调用)时发现的唯一可行方法,该批处理文件使用“net use”提供远程共享凭据,然后使用robocopy等复制文件,来自同一个命令 shell “ session ”中。这样就可以将文件从本地驱动器复制/部署到远程共享上了,但是用这种方式进行任何类型的文件系统浏览(就像使用FSO一样)会非常复杂和脆弱。

    我考虑过的另一种可能性是有两个脚本 session -您调用该脚本(在命令行中提供备用凭据),并且它运行cmd.exe session ,该 session 首先执行“net use”将远程共享映射到临时目录本地驱动器,然后以“实际执行操作”模式运行,并使用FSO,然后完成操作(返回cmd.exe Shell),再次使用“net use”断开临时驱动器的连接。这很笨拙(多个窗口,临时驱动器...),我什至不确定它是否可以工作。

    是否有人知道这两种方法,或者知道可行的替代方法? (在Windows 2000计算机上坚持使用VBScript / WScript-无需PowerShell!)

    最佳答案

    好的,我在一个错误的观念下工作-FSO不会“提取”使用“NET USE”(或Wscript.Network“MapNetworkDrive”)建立的网络凭据。

    事实证明确实如此,并且以下示例代码可以很好地工作(无需设置临时网络驱动器):

    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
    

    关于vbscript - 从VBScript中访问网络共享,例如FileSystemObject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/631401/

    相关文章:

    string - 经典 ASP (VBScript) 替换字符串中的特殊字符表现很奇怪

    c# - 如何以编程方式在 Windows 7 中打开/关闭密码保护共享?

    python - 使用 Python 从网络文件夹/共享读取/写入文件?

    ms-access - 通过VBScript将数据从Oracle转移到MS Access的最快方法

    vbscript - 使用vbs从文本文件中删除空字符

    powershell - 是否可以编写一个脚本来监听 Windows 中屏幕分辨率的变化?

    VBScript:如何检查 SWbemObjectSet 的有效性?

    php - 为什么 PHP 无法将文件复制到局域网中的共享文件夹?

    Azure 文件预览 - 访问 IIS 和 FileZilla 中的共享文件夹

    multithreading - 如何在一台服务器上配置Elasticsearch集群以获得最佳搜索性能