2013-01-16 33 views
2

我有几个脚本必须使用UNC路径 - 而不是DFS - 并且希望能够从DFS路径以编程方式确定UNC路径。例如,我们有这样的事:如何以编程方式将DFS路径转换为使用VBS的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)输了...

+0

似乎raymund的亲切贴好C#代码此http://stackoverflow.com/questions/3938669/how-can-i-get-an-active-unc-path-in-dfs-programatically但它不是在VBS中... – Lizz

+1

http:// include。 wutils.com/wmi/ROOT%5Ccimv2/CIM_ManagedSystemElement/CIM_LogicalElement/Win32_DfsTarget.html可能是一个起点 – stuartd

+0

@StuartDunkeld +1链接。我尝试了一些他们的脚本,并得到一个“工作”,虽然它没有吐出任何信息 - 完全没有。另外,如果需要针对域控制器运行WMI查询,那么我需要对这些权限的管理员权限,但情况并非总是如此,因此脚本的可靠性不会太高。顺便说一下,此链接也有助于创建VBS以指导更好的方向:http://www.tech-archive.net/Archive/Scripting/microsoft.public.scripting.vbscript/2007-07/msg00125.html – Lizz

回答

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共享定义,但是在实际广告中看起来可能很难识别

+0

感谢Jobbo!我现在没有一个测试环境,但会看到我能做的事。与此同时,我又看到了第二个答案(也是在C#中)上面的链接之一,它不使用WMI,而是使用NetAPI32.dll:http://stackoverflow.com/a/13470440/1569434 。这可能是典型用户能够获得UNC路径的方式。再次,我不知道C#。奖励积分,如果你可以帮助其翻译成VBS。 :)漂亮请吗? – Lizz

+1

不客气。我也无法测试它,但至少是它的翻译。我检查了其他问题。 NetAPI32.dll被提及作为Win32 API的参考,不能用VBScript做到这一点,我很害怕。在这个问题中接受的答案也是使用WMI,但只是做了类似于我的答案的东西,并要求您在大量服务器上运行它(如果您知道它们的名称)并且有权这样做 – Jobbo

相关问题