PowerShellでは、現在のドライブがネットワークドライブかどうかをどのように判断できますか?
-
03-07-2019 - |
質問
現在のドライブがマップされたドライブかどうかを、Powershell内から知る必要があります。
残念ながら、Get-PSDriveは「期待どおり」動作していません:
PS:24 H:\temp
>get-psdrive h
Name Provider Root CurrentLocation
---- -------- ---- ---------------
H FileSystem H:\ temp
ただし、MS-Dosの「純使用」ではH:が実際にマップされたネットワークドライブであることを示しています:
New connections will be remembered.
Status Local Remote Network
-------------------------------------------------------------------------------
OK H: \\spma1fp1\JARAVJ$ Microsoft Windows Network
The command completed successfully.
私がしたいのは、ドライブのルートを取得してプロンプトに表示することです( PowerShellプロンプトのカスタマイズ-CMDの$ M $ P $ _ $ + $ Gと同等?)
解決
.NETフレームワークを使用:
PS H:\> $x = new-object system.io.driveinfo("h:\")
PS H:\> $x.drivetype
Network
他のヒント
WMIを試す:
Get-WMI -query "Select ProviderName From Win32_LogicalDisk Where DeviceID='H:'"
WMIを使用する別の方法:
get-wmiobject Win32_LogicalDisk | ? {$ _。deviceid -eq" s:"} | %{$ _。providername}
すべてのネットワークドライブを取得するには:
get-wmiobject Win32_LogicalDisk | ? {$ _。drivetype -eq 4} | %{$ _。providername}
受け入れられた答えのわずかにコンパクトなバリエーション:
[System.IO.DriveInfo]("C")
以下に示すように、これをさらに一歩進めます。
([System.IO.DriveInfo]("C")).Drivetype
これはローカルシステムでのみ機能することに注意してください。リモートコンピューターにWMIを使用します。
最も信頼できる方法は、WMIを使用することです
get-wmiobject win32_volume | ? { 最も信頼できる方法は、WMIを使用することです
<*>
DriveTypeは、次の値を持つ列挙型です
0-不明
1-ルートディレクトリなし
2-リムーバブルディスク
3-ローカルディスク
4-ネットワークドライブ
5-コンパクトディスク
6-RAMディスク
これは私がやったブログ投稿へのリンクです件名
.DriveType -eq 4 } | % { get-psdrive 最も信頼できる方法は、WMIを使用することです
<*>
DriveTypeは、次の値を持つ列挙型です
0-不明
1-ルートディレクトリなし
2-リムーバブルディスク
3-ローカルディスク
4-ネットワークドライブ
5-コンパクトディスク
6-RAMディスク
これは私がやったブログ投稿へのリンクです件名
.DriveLetter[0] }
DriveTypeは、次の値を持つ列挙型です
0-不明 1-ルートディレクトリなし 2-リムーバブルディスク 3-ローカルディスク 4-ネットワークドライブ 5-コンパクトディスク 6-RAMディスク
これは私がやったブログ投稿へのリンクです件名