2013-01-16 32 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

相關問題