Просмотр всех доступных дисков в PowerShell

Просмотр всех доступных дисков в PowerShell

Я заметил, что cd \ переходит в корень моего диска.

Но есть и другие диски, к которым я могу получить доступ на своем компьютере.

Есть ли команда в PowerShell, которая выводит список всех дисков, к которым я могу подключиться?

решение1

Это в некоторой степени зависит от того, что вы называете «диском». В PowerShell есть диски, которые представляют ваши обычные локальные или сетевые тома, а также диски, которые содержат другие объекты, такие как псевдонимы, переменные среды, функции, переменные PowerShell, кусты реестра и многое другое.

Чтобы просмотреть список всех «дисков» в PowerShell, используйте:

Get-PSDrive

Или вы можете использовать встроенный псевдоним:

gdr

(Всюду Get-PSDriveниже вы можете заменить gdrуказанное вами.)

Чтобы получить только диски FileSystem, например: локальные или сетевые тома или отсеки для носителей, используйте:

Get-PSDrive -PSProvider FileSystem

Получитьтольколокальные диски илитолькожесткие диски, я не смог найти подходящее свойство или метод в выводе объектов Get-PSDriveдля фильтрации. Немного погуглив позже, я нашелДокументация Microsoft Get-PSDrive на TechNet. Там, наряду с подробностями использования Get-PSDrive, также перечислены несколько других методов перечисления дисков, доступных в PowerShell. Один из них, который я нашел полезным, — это класс System.IO.DriveInfo в .NET Framework.

Приведенная ниже команда, выполняемая через PowerShell, выведет список только локальных жестких дисков.

[System.IO.DriveInfo]::getdrives() | Where-Object {$_.DriveType -eq 'Fixed'}

Если вы хотите включить любой локальный диск (не только жесткие диски), используйте это:

[System.IO.DriveInfo]::getdrives() | Where-Object {$_.DriveType -ne 'Network'}

Если вы хотите видеть только буквы дисков, направьте вывод в Select-Object, например так:

[System.IO.DriveInfo]::getdrives() | Where-Object {$_.DriveType -ne 'Network'} | Select-Object -Property Name

Обратите внимание, что Where-Objectи Select-Objectтакже есть встроенные псевдонимы ?и select, respectively. (Where-Object is also usable aswhere` - это просто вопрос предпочтений.) Класс System.IO.DriveInfo также можно сократить до просто IO.DriveInfo. Так что последняя команда может быть запущена так, если вам нравится:

[IO.DriveInfo]::getdrives() | ? {$_.DriveType -ne 'Network} | select -Property Name

Конечно, есть еще много чего, что вы можете сделать с Get-PSDrives, и классами .NET, доступными через PowerShell, а также многими другими доступными сочетаниями клавиш PowerShell. Я предлагаю почитать больше на TechNet и подобных сайтах, а также использовать командлеты и , Get-Helpчтобы Get-Commandлучше ознакомиться со средой.

решение2

Используйте следующую команду powershellдля вывода списка всех дисков на вашем ПК

gdr -PSProvider 'FileSystem'

или

Get-PSDrive -PSProvider 'FileSystem'

Связанный контент