我有一個有很多掛載點的Exchange服務器。鑑於數據庫文件的路徑,有沒有辦法找出它們在哪個捲上?問題在於它們通常不在卷裝入點,而是在樹下。我使用Powershell,所以我需要一個最好使用WMI的解決方案,但也可以使用任何.NET或COM對象。如何在使用安裝點時找出給定的NTFS路徑的容量?
1
A
回答
1
我剛剛發現了ReparsePoint屬性。
抓住我進入的目錄之後,我可以走到樹上,直到我到達Root並沿途檢查ReparsePoints。
$dbDir = (get-item (Get-MailboxDatabase $db).edbfilepath).directory
$dbDir
if($dbdir.parent){
#todo make this recursive
}
#test if it's a reparse point.
if ($dbdir.attributes -band [System.IO.FileAttributes]::ReparsePoint){
#it's a mountpoint.
}
從這裏還有的 「MOUNTVOL/L」 工具,或更好的WMI關聯類Win32_MountPoint
和Win32_Volume
。
有點牽扯 - 但我沒有看到一個簡單的方法來問「我在什麼量上?」一旦我把它放在一起,我會發佈一個完整的解釋。
編輯 - 更多詳情點擊這裏:http://slipsec.com/blog/?p=126
2
PSCX包括GET-ReparsePoint的cmdlet:
C:\temp> Get-ReparsePoint d | ft -auto
Target Path ReparsePointTag
------ ---- ---------------
\??\Volume{a5908e7a-eca5-11dd-be98-005056c00008} C:\temp\d MountPoint
可以映射使用註冊表卷GUID來熟悉驅動器名稱:
Get-ItemProperty HKLM:\SYSTEM\MountedDevices
[...]
\DosDevices\D: : {22, 35, 171, 65...}
[...]
\??\Volume{a5908e7a-eca5-11dd-be98-005056c00008} : {22, 35, 171, 65...}
把東西放在一起,我們可以得到的序列#安裝在c:\ temp \ d的物理驅動器:
$guid = (Get-ReparsePoint d).target
$serial = (get-itemproperty HKLM:\SYSTEM\MountedDevices).$guid
您可以比較是與其他邏輯卷的序列號相對應的,例如帶有DOS字母的序列號。
> function ArrayEqual([psobject[]]$arr1, [psobject[]]$arr2)
{ @(Compare-Object $arr1 $arr2 -sync 0).Length -eq 0 }
> (gi HKLM:\SYSTEM\MountedDevices).property | ?{ $_ -like "\dos*" } |
?{ ArrayEqual$serial (gp HKLM:\SYSTEM\MountedDevices).$_ }
\DosDevices\D:
有關數組比較功能的說明,請參見Keith Hill's blog。
爲了完整起見,注意這不會似乎是通過COM報道同一序列...
> $comSerial = (new-object -com scripting.filesystemobject).getdrive("d")
> [bitconverter]::GetBytes($comSerial)
18
208
242
202
相關問題
- 1. 如何找到IronPython的安裝路徑
- 2. 查找給定路徑的根路徑
- 3. 如何找到InfiniBand安裝路徑
- 4. 如何找出Python庫的安裝路徑?
- 5. 如何查找哪個容器安裝了特定的容量?
- 6. 如何爲已安裝的python包使用自定義路徑
- 7. 如何在安裝cython時個性化安裝路徑?
- 8. 安裝QSTK時出現路徑問題
- 9. 查找程序的安裝路徑
- 10. 如何使用IBM Spark安裝程序設置安裝路徑?
- 11. 如何在ubuntu上查找ruby和bundle的安裝路徑?
- 12. WPF安裝路徑變量?我的安裝文件在哪裏
- 13. 如何在使用xslt時給出根選擇路徑?
- 14. 定製安裝路徑
- 15. 安裝梨路徑定義
- 16. 即使在安裝並定義路徑變量後仍然無法安裝npm
- 17. 如何使用安裝在非標準路徑中的cmake?
- 18. 「系統找不到指定的路徑」在Maven安裝錯誤
- 19. 找到頂點之間給定路線的最短路徑python
- 20. 詹金斯無法找到耙安裝,即使路徑給出明確
- 21. 如何捆綁在指定路徑Gemfile.lock的與Capistrano的安裝
- 22. 安裝路徑
- 23. C++:如何在該文件的路徑與給定的路徑
- 24. 如何知道exe的安裝路徑?
- 25. 如何計算NTFS磁盤的容量
- 26. 如何在Android中安裝USB路徑?
- 27. 如何在CMakeLists.txt中指定安裝CMake的路徑
- 28. 如何告知CPL的CPAN安裝使用我的FFTW路徑?
- 29. 指定安裝紅寶石的路徑
- 30. 確定MediaWiki安裝的文章路徑
up--答案是非常接近這一點,但大多數地方我沒有PSCX,所以... – slipsec 2009-08-03 22:44:57