7

現在のドライブがマップされたドライブであるかどうかを Powershell 内から知る必要があります。

残念ながら、Get-PSDrive は「期待どおり」に機能していません。

PS:24 H:\temp
>get-psdrive  h

Name       Provider      Root      CurrentLocation
----       --------      ----      ---------------
H          FileSystem    H:\          temp

しかし、MS-Dos の "net use" は、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 に相当)

4

6 に答える 6

10

.NET フレームワークを使用します。

PS H:\> $x = new-object system.io.driveinfo("h:\")
PS H:\> $x.drivetype
Network
于 2008-10-01T16:19:27.400 に答える
1

以下に示すように、これをさらに一歩進めます。

([System.IO.DriveInfo]("C")).Drivetype

これはローカルシステムでのみ機能することに注意してください。リモートコンピューターにはWMIを使用します。

于 2008-10-06T14:48:37.940 に答える
1

WMIを試してください:

Get-WMI -query "Select ProviderName From Win32_LogicalDisk Where DeviceID='H:'"
于 2008-10-01T16:32:28.727 に答える
1

WMIを使用する別の方法:

get-wmiobject Win32_LogicalDisk | ? {$_.deviceid -eq "s:"} | % {$_.providername}

次の方法ですべてのネットワークドライブを入手します。

get-wmiobject Win32_LogicalDisk | ? {$_.drivetype -eq 4} | % {$_.providername}

于 2008-10-01T16:36:22.743 に答える
1

最も信頼できる方法は、WMI を使用することです。

get-wmiobject win32_volume | ? { $_.DriveType -eq 4 } | % { get-psdrive $_.DriveLetter[0] } 

DriveType は、次の値を持つ列挙型です。

0 - 不明 1 - ルート ディレクトリなし 2 - リムーバブル ディスク 3 - ローカル ディスク 4 - ネットワーク ドライブ 5 - コンパクト ディスク 6 - RAM ディスク

これは、私がこの件に関して行ったブログ投稿へのリンクです

于 2008-10-01T17:31:39.520 に答える
1

受け入れられた答えのもう少しコンパクトなバリエーション:

[System.IO.DriveInfo]("C")
于 2008-10-02T16:04:40.657 に答える