Мне нужно знать из 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
@jjarava - я с опозданием понял, что, хотя класс DriveInfo сообщит вам тип диска, он не вернет сетевой путь. Возможно, это даст один из других ответов.
Попробуйте 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}
Самый надежный способ - использовать WMI.
get-wmiobject win32_volume | ? { $_.DriveType -eq 4 } | % { get-psdrive $_.DriveLetter[0] }
DriveType - это перечисление со следующими значениями
0 - Неизвестно 1 - Нет корневого каталога 2 - Съемный диск 3 - Локальный диск 4 - Сетевой диск 5 - Компакт-диск 6 - RAM-диск
Вот ссылка на сообщение в блоге, которое я сделал по теме
Единственная проблема с этим подходом (который кажется намного чище) заключается в том, что я использую WINXP, поэтому класс win32_volume недоступен! В любом случае спасибо за совет.
Чуть более компактный вариант принятого ответа:
[System.IO.DriveInfo]("C")
Сделайте еще один шаг, как показано ниже:
([System.IO.DriveInfo]("C")).Drivetype
Обратите внимание, что это работает только для локальной системы. Используйте WMI для удаленных компьютеров.
Хороший совет! И тогда как мне получить Rootdirectory = К сожалению, RootDirectory снова указывает на H: \ ...