【问题标题】:How can I programmatically convert a DFS path to UNC using VBS?如何使用 VBS 以编程方式将 DFS 路径转换为 ​​UNC?
【发布时间】:2013-01-16 02:06:16
【问题描述】:

我有几个脚本必须使用 UNC 路径 - 而不是 DFS - 并且希望能够通过 DFS 路径以编程方式确定 UNC 路径。例如,我们有类似的东西:

\\domain\fs\Home\HomeFolder\MyUserID

我想从中得到这样的 UNC 路径:

\\Server1\HomeFolder\MyUserID

我不能指望像 DFSUtil.exe 这样的实用程序可用。它需要在 VBScript 中。

我在 NET 中找到了以下使用 WMI 的代码,但我无法弄清楚将其转换为可用 VBS 时发生了什么: http://www.codeproject.com/Tips/158829/Convert-a-file-path-to-a-UNC-Path

有人可以帮忙吗?我迷失在翻译中(不会说 NET)...

【问题讨论】:

标签: .net vbscript wmi unc microsoft-distributed-file-system


【解决方案1】:

这是您链接到的内容的最小 VBScript 翻译:

Option Explicit

Dim wmi
Dim col
DIm itm

Set wmi = GetObject("winmgmts:\\.\root\cimv2")
Set col = wmi.ExecQuery("Select DeviceID,ProviderName From Win32_LogicalDisk where DriveType=4")

With WScript
  For Each itm in col
    .Echo "========="
    .Echo "DeviceID:" & vbTab & itm.DeviceID
    .Echo "ProviderName:" & vbTab & itm.ProviderName
  Next
End With

Set wmi = Nothing
Set col = Nothing
WScript.Quit

简而言之,我认为这不是您想要的...我认为您必须先映射驱动器才能运行它。

更简洁的方法是对 Active Directory 运行查询以查找 DFS 共享定义,但在 AD 中实际查找的位置可能难以识别

【讨论】:

  • 谢谢乔博!我现在没有环境来测试这个,但会看看我能做什么。与此同时,我再次查看了上述链接之一的第二个答案(也在 C# 中),它不使用 WMI,而是使用 NetAPI32.dll:stackoverflow.com/a/13470440/1569434。这可能是典型用户能够获取 UNC 路径的方式。再说一次,我不懂 C#。如果您可以帮助将其翻译为 VBS,则可以加分。 :) 漂亮吗?
  • 不客气。我也无法测试它,但至少它是一个翻译。我检查了另一个问题。提到 NetAPI32.dll 作为对 Win32 API 的引用,恐怕不能用 VBScript 做到这一点。该问题中接受的答案也是使用 WMI,但只是在做与我在这里的答案类似的事情,并且需要您在大量服务器上运行它(如果您知道他们的名字)并有权这样做
猜你喜欢
  • 1970-01-01
  • 2011-01-19
  • 2015-10-29
  • 1970-01-01
  • 1970-01-01
  • 2013-02-18
  • 2014-05-22
  • 1970-01-01
  • 2010-10-08
相关资源
最近更新 更多