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

1.1. New-SmbMapping

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

PS C:\> New-SmbMapping -LocalPath 'J:' -RemotePath '\\192.168.2.200\SharedFolder' -Persistent $true

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

  • LocalPath — локальный путь или буква, под которой будет подключен диск;
  • RemotePath — путь к папке через IP или DNS. В случае выше подразумевается, что у пользователя, который открыл консоль Powershell, есть права для подключения к этому пути. Важно так же обратить внимание на кавычки, если ваш путь содержит специальные символы;
  • Persistent — дословно переводится как ‘постоянный’, но в случае сетевых папок обозначает восстановление соединения после отключения сети/компьютера.

Пример выше специально демонстрирует проводник так как это одна из проблем этой команды в версии 5.1 — диск начнет отображаться в проводнике только после перезагрузки компьютера или перезапуске процесса ‘explorer.exe’.

1.2. New-PSDrive

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

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

PS C:\> New-PSDrive -Name 'G' -PSProvider 'FileSystem' -Root '\\192.168.2.200\SharedFolder' -Persist -Scope 'Global'

Где:

  • Name — путь, буква или любой другой идентификатор определяющий диск. Чаще всего это просто буква;
  • PSProvider — поставщик услуг. Всех поставщиков услуг можно увидеть через ‘Get-PSProvider’. В большинстве случаев поставщиком услуг для сетевых дисков будет ‘FileSystem’. В теории вы можете использовать поставщика «Registry» что бы в рамках сессии Powershell легче обращаться к какому-то пути. Поставщик услуг или ‘PSProvider’ — это условная программа, которая будет обрабатывать вашу команду между Powershell и Windows;
  • Root — путь до удаленной папки. Если бы в ‘PSProvider’ стоял ‘Registry’, то тут можно было указать путь следующего формата: ‘HKLM:\Software\Microsoft’;
  • Persist — должно ли восстанавливаться подключение при потере связи;
  • Scope — область действия диска. В этом случае не должно играть значение, но на форумах советуют использовать значение ‘Global’, если не получается подключать диск. Если бы вы использовали сетевой диск только для одно сессии Powershell — вы могли бы ограничить область видимости диска.

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

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

2.1. New-PSDrive.

В случае команды ‘New-PSDrive’ вам нужно будет выполнить ‘Get-Credential’ и поместить в него учетные данные. Традиционный способ поместить эти данные в переменную:

PS C:\> $сred = Get-Credential

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

После этого мы передаем переменную в параметр ‘-Credential’:

PS C:\> New-PSDrive -Credential $cred -Name 'G' -PSProvider 'FileSystem' -Root '\\192.168.2.200\SharedFolder' -Persist -Scope 'Global'

2.2. New-SMBMapping.

В случае с ‘New-SMBMapping’ эта операция выполняется проще. У вас есть 3 параметра, которые нужно заполнить:

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

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

PS C:\> $password = '123'
PS C:\> $username = 'admin@domain.local'
PS C:\> New-SmbMapping -Username $username -Password $password -LocalPath 'J:' -RemotePath '\\192.168.2.200\SharedFolder' -Persistent $true -SaveCredentials

Проблема, которую не получилось решить на разных версиях Powershell, связана с параметром ‘-SaveCredentials’. Его указание приводит к ошибке «New-SmbMapping : The parameter is incorrect.». Его отсутствие — не сохраняет введенные учетные данные и после перезагрузки связь с диском может пропасть если не добавить соответствующую запись в ‘Credential Manager’.