Монтирование диска windows powershell

Обновлено: 07.07.2024

В Powershell реализована возможность подключать сетевые диски используя протоколы SMB/CIFS. Эта возможность использует разные команды работа с которыми может вызвать сложности. Рассмотрим применение команд на примерах.

Навигация по посту

Как работают в Powershell сетевые диски

Такой способ ограничен пользователем, который открыл консоль или запустил скрипт. Если вы запустите консоль от имени доменного администратора - то обращение к сетевому пути будет от его имени.

Возможность использовать другие учетные записи, а так же подключать сетевые диски, реализованы в 2 командах:

Обе команды, аналогично Get-ChildItem, подключают диски под учетной записью, которая запустила консоль.

Хоть эти команды достаточно старые, в каждой из новых версий Powershell находятся ошибки и баги. На момент написания статьи баги были найдены в версиях 5.1 - 7.1 и все они касались процесса подключения.

Основной момент, который упростит работу с сетевыми папками в Powershell кроется в понимании понятии провайдеров. Создавая сетевой диск обычными средствами Windows вы сразу видите результат в проводнике. Делая то же самое в Powershell вы изначально обращаетесь к провайдеру услуг, а он обращается к Windows. В зависимости от указанных вами параметров и возможностью команды у вас может быть создан диск только в рамках этого провайдера либо в рамках провайдера и области Windows.

Если это сложно понять, то представьте, что среда Windows и Powershell это разные вещи и что бы скопировать файл с одного места на другое - нужно использовать дополнительный параметр, которого может и не быть.

Получение списка сетевых дисков и их удаление

Мы можем получить список сетевых дисков используя обе команды модуля:

Получение списка сетевых дисков через Powershell

Получение информации о сетевом диске в Powershell

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

Force удаляет подключение без подтверждения.

Подключение сетевых дисков

Проблемы с командами могут зависеть от версии вашего интерпретатора. Powershell 5-ой версии был предустановлен во всех версиях начиная с Windows 10 и Windows Server 2016. Если вы сомневаетесь в версии, то это можно проверить следующей командой:

Вывод версии Powershell

New-SmbMapping

Самый простой способ подключить диски, используя команду New-SmbMapping, будет выглядеть следующим способом:

Подключение сетевого диска через Powershell New-SMBMapping

В этой команде используются следующие ключи:

Мы можем перезапустить процесс средствами Powershell. Выполнение этой команды, как минимум, закроет все открытые окна:

Перезапуск explorer в Powershell

Так же у вас могут появиться другие ошибки, например следующие говорят об уже занятой букве:

  • New-SmbMapping : Имя локального устройства уже используется.
  • New-SmbMapping : The local device name is already in use.
  • New-SmbMapping : The network name cannot be found.

New-PSDrive

В отличие от предыдущего способа - у него нет проблем с проводником, но после перезагрузки компьютера подключение к диску пропадет. Как я прочитал в каких-то версиях Powershell это исправлено, в каких-то появились новые проблем. Один из способов сделать диск постоянным - будет рассмотрен ниже.

Подключить аналогичный диск можно следующим способом:

Подключение сетевой папки в Powershell с New-PSDrive

У вас могут появиться следующие ошибки:

  • New-PSDrive : The network resource type is not correct;
  • The specified network resource or device is no longer available.

Получение информации о сетевом диске через Powershell в реестре

Изменение настроек сетевого диска через Powershell в реестре

Подключение дисков под другим пользователем

Обе команды позволяют выполнять подключение используя других пользователей. Для каждой из команд этот подход отличается.

Ввод учетных данных в Powershell

Эта переменная будет хранить ссылку на объект в памяти, который нельзя будет экспортировать на другой компьютер. Как упростить процесс, если вы планируете использовать учетные данные на разных компьютерах, рассмотрено в другой статье.

Подключение сетевых дисков в Powershell под другим пользователем

  • UserName - логин;
  • Password - пароль;
  • SaveCredential - нужно ли сохранять учетные данные.

Пример подключения с сохранением учетных данных:

Подключение сетевых дисков в Powershell с New-SmbMapping под другим пользователем

Подключение дисков удаленно

Диск Windows PowerShell — это расположение хранилища данных, доступ к которому можно получить так же, как к диску файловой системы в Windows PowerShell. Поставщики Windows PowerShell создают несколько дисков, например диски файловой системы (включая C: и D:), диски реестра (HKCU: и HKLM:) и диск сертификата (Cert:), а вы можете создать собственные диски Windows PowerShell. Эти диски очень полезны, но они доступны только в Windows PowerShell. К ним невозможно получить доступ с помощью других средств Windows, например проводника или Cmd.exe.

Windows PowerShell использует существительное PSDrive для команд, которые работают на дисках Windows PowerShell. Для получения списка дисков Windows PowerShell в сеансе Windows PowerShell используйте командлет Get-PSDrive .

Хотя отображение дисков в списке зависит от дисков в вашей системе, список будет выглядеть аналогично выходным данным команды Get-PSDrive , показанной выше.

Диски файловой системы являются подмножеством дисков Windows PowerShell. Их можно идентифицировать по записи FileSystem в столбце "Поставщик". (Диски файловой системы в Windows PowerShell поддерживаются поставщиком FileSystem Windows PowerShell.)

Чтобы просмотреть синтаксис командлета Get-PSDrive , введите команду Get-Command с параметром Syntax:

Параметр PSProvider позволит отобразить только диски Windows PowerShell, поддерживаемые конкретным поставщиком. Например, чтобы отобразить только те диски Windows PowerShell, которые поддерживаются поставщиком FileSystem Windows PowerShell, введите команду Get-PSDrive с параметром PSProvider и значением FileSystem:

Чтобы просмотреть диски Windows PowerShell, представляющие кусты реестра, используйте параметр PSProvider для отображения только тех дисков Windows PowerShell, которые поддерживаются поставщиком реестра Windows PowerShell:

С дисками Windows PowerShell также можно использовать стандартные командлеты расположения:

Добавление новых дисков Windows PowerShell (New-PSDrive)

Добавить собственные диски Windows PowerShell можно с помощью команды New-PSDrive . Чтобы получить синтаксис для команды New-PSDrive , введите команду Get-Command с параметром Syntax:

Чтобы создать новый диск Windows PowerShell, необходимо указать три параметра:

имя диска (можно использовать любое допустимое имя Windows PowerShell);

PSProvider (используйте FileSystem для расположений файловой системы и Registry для расположений реестра);

корень, т. е. путь к корню нового диска.

Например, можно создать диск с именем Office, который сопоставляется с папкой, содержащей приложения Microsoft Office на компьютере, например C:\Program Files\MicrosoftOffice\OFFICE11 . Чтобы создать диск, введите следующую команду:

Обычно пути не зависят от регистра.

Ссылка на новый диск Windows PowerShell, как и на все диски Windows PowerShell, указывается по его имени, за которым следует двоеточие ( : ).

Диск Windows PowerShell может упростить множество задач. Например, некоторые наиболее важные разделы в реестре Windows содержат слишком длинные пути, что делает их громоздкими и сложными для запоминания. Сведения о критической конфигурации см. в разделе HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion . Чтобы просмотреть и изменить элементы в разделе реестра CurrentVersion, можно создать диск Windows PowerShell, корень которого находится в этом разделе, введя:

После этого можно изменить расположение на диск cvkey: (как и для любого другого диска):

Командлет New-PsDrive добавляет новый диск только в текущий сеанс Windows PowerShell. Если закрыть окно Windows PowerShell, новый диск будет потерян. Чтобы сохранить диск Windows PowerShell, используйте командлет Export-Console для экспорта текущего сеанса Windows PowerShell, а затем используйте параметр PSConsoleFile файла PowerShell.exe для импорта. Также можно добавить новый диск в профиль Windows PowerShell.

Удаление дисков Windows PowerShell (Remove-PSDrive)

Диски из Windows PowerShell можно удалить, используя командлет Remove-PSDrive . Командлет Remove-PSDrive прост в использовании. Чтобы удалить определенный диск Windows PowerShell, необходимо только указать имя диска Windows PowerShell.

Например, если вы добавили диск Windows PowerShell Office: , как описано в разделе New-PSDrive , вы можете удалить его, выполнив следующую команду:

Чтобы удалить диск Windows PowerShell cvkey:, также показанный в разделе New-PSDrive , используйте следующую команду:

Удалить диск Windows PowerShell легко, но его невозможно удалить, если он открыт. Пример:

Обычно для работы с дисками я использую оснастку управления дисками (Disk management) или утилиту Diskpart. А недавно решил проверить, нет ли в PowerShell каких либо средств для работы с дисками. Оказалось, что есть. В PowerShell (начиная с третьей версии) входит модуль Storage, предназначенный как раз для управления дисковыми устройствами.

В него входит больше сотни командлетов, вывести их список можно командой:

Get-Command -Module Storage

Первым делом выведем список всех дисков в системе командой:

Новый диск можно узнать по значению RAW в поле Partition Stylle. Инициализируем его:

Initialize-Disk -Number 1 -PartitionStyle GPT

Затем создадим раздел размером 40Гб и дадим ему букву диска X:

New-Partition -DiskNumber 1 -Size 40GB -DriveLetter X

Отформатируем полученный раздел в NTFS и укажем для него метку тома:

Format-Volume -DriveLetter X -FileSystem NTFS -NewFileSystemLabel Disk2 -Confirm:$false

создание раздела в PowerShell

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

Get-PartitionSupportedSize -DriveLetter X | Format-List

Увеличим раздел до максимально возможного:

$size = (Get-PartitionSupportedSize -DriveLetter X).SizeMax
Resize-Partition -DriveLetter X -Size $size

И до кучи сменим букву диска:

Set-Partition -DriveLetter X -NewDriveLetter Y

изменение раздела диска в PowerShell

И наконец мне понадобилось вернуть диск в первоначальное состояние. Для очистки диска воспользуемся командой, которая удалит все данные и информацию о разделах:

Clear-Disk -Number 1 -RemoveData -Confirm:$false

И снова получим чистый, не разбитый диск.

очистка диска в PowerShell

И еще, все командлеты имеют параметр CimSession, позволяющий выполнять операции с дисками на удаленных компьютерах, например:

$session = New-CimSession -ComputerName SRV1 -Credential Contoso\Administrator
Get-Disk -Cimsession $session

удаленное управление дисками в PowerShell

Напомню, что по умолчанию модуль Storage есть только в Windows 8\Server 2012 и выше, для более старых ОС придется устанавливать PowerShell v3 отдельно. Более подробную информацию о командлетах для работы с дисками можно посмотреть на TechNet, либо воспользовавшись встроенной справкой PowerShell.

Как я могу монтировать и отключать ISO-образы из PowerShell в Windows 8 без сторонних программ?

Оригинальная версия этого вопроса заставила меня задуматься, возможно ли смонтировать ISO-образ через PowerShell в Windows 8.

Если вы сидите в командной строке и хотите смонтировать ISO, выполните следующую команду:

Это вызовет командлет PowerShell. Вам будет предложено указать путь к ISO-образу, который вы хотите смонтировать. Когда вы закончите, оставьте последний пустой и нажмите Enter .

выполнение командлета Mount-DiskImage

Тада! Это установлено:

Тада! Монтируется - «Устройства со съемным хранилищем»

Чтобы отключить ISO из PowerShell, запустите Dismount-DiskImage и следуйте инструкциям. Если вы знаете только букву диска в верхней части головы, а не путь к изображению, используйте эту команду:

Get-Volume [Drive Letter] | Get-DiskImage | Dismount-DiskImage

Эта команда захватит указанный вами диск, найдет образ диска и отключит его.

«Устройства со съемным хранилищем» после демонтажа ISO

Вы также можете использовать этот -PassThru флаг для хранения данных, переданных команде. Давайте смонтируем несколько ISO-образов, отобразим их буквы дисков, запустим файл на одном из дисков, а затем отключим все ISO-образы.

Отображение информации о громкости для каждого ISO, установленного с помощью foreach петли

вывод foreach / Get-Volume и ls

Чтобы отключить ISO, используйте следующую команду:

Чтобы создать простой сценарий, который проверяет, подключен ли ISO-файл и является ли он действительно (по сравнению с VHD), я хотел бы использовать его -PassThru для временного хранения объекта и использовать Get-DiskImage команду для обновления состояния объекта DiskImage. Это обновит Attached свойство. StorageType Свойство будет сказать, является ли файл является ISO или VHD в соответствии с его расширением файла.

используя <code> -PassThru </ code> и <code> Get-DiskImage </ code>

Вот вывод <code> $ UbuntuISO </ code>

StorageType Из VHD 2, где ISO возвратит 1. Вот вывод $UbuntuISO :

вывод <code> $ temp </ code> после монтирования виртуального жесткого диска

Это вывод $temp после монтирования VHD: ( Mount-DiskImage также может монтировать VHD!)

Обратите внимание, что Attached свойство выше False , несмотря на то, что Mount-DiskImage команда работает без заминки.

переменная <code> $ UbuntuISO </ code> не обновляется

Имейте в виду, что $UbuntuISO переменная также не будет обновляться:

Читайте также: