![Просмотр всех доступных дисков в PowerShell](https://rvso.com/image/1416714/%D0%9F%D1%80%D0%BE%D1%81%D0%BC%D0%BE%D1%82%D1%80%20%D0%B2%D1%81%D0%B5%D1%85%20%D0%B4%D0%BE%D1%81%D1%82%D1%83%D0%BF%D0%BD%D1%8B%D1%85%20%D0%B4%D0%B8%D1%81%D0%BA%D0%BE%D0%B2%20%D0%B2%20PowerShell.png)
Я заметил, что 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 as
where` - это просто вопрос предпочтений.) Класс 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'