Как в PowerShell определить, является ли текущий диск сетевым или нет?

StackOverflow https://stackoverflow.com/questions/158359

Вопрос

Мне нужно знать изнутри 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 — эквивалент $M$P$_$+$G CMD?)

Это было полезно?

Решение

Используйте платформу .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 | ? { $_.DriveType -eq 4 } | % { get-psdrive $_.DriveLetter[0] } 

DriveType представляет собой перечисление со следующими значениями

0 - Неизвестно 1 - Нет корневого каталога 2 - съемный диск 3 - локальный диск 4 - сетевой диск 5 - Компактный диск 6 - ОЗУ диск

Вот ссылка на сообщение в блоге, которое я сделал на предмет

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top