Powershell - подключаем сетевые диски


11 июня 2019


Powershell - подключаем сетевые диски

В Powershell есть два способа подключить сетевые диски. Это зависит от версии Powershell. Что бы узнать версию Powershell можно выполнить:

$PSVersionTable

или

host

Первый способ для версии Powershell 5.0+. Отмечу, что с ним есть проблема и она заключается в том, что диск не отображается в проводнике, хоть и доступен по букве в PS. Кто-то пишет, что в Powershell 5 его исправили, но у меня, включительно на Windows 10, Server 2019 проблема осталась (версия PS 5.1). Решается она перезагрузкой процесса (explorer.exe) или компьютера.

Команда пишется так:

New-SmbMapping -LocalPath "J:" -RemotePath "\\192.168.3.140\Folder2" -Persistent $True

Где:

-LocalPath - локальный путь или буква, под которой будет отображаться диск
-RemotePath - путь к папке через IP или DNS. Не забываем ставить кавычки в случае если в пути есть символы типа пробела.
-Persistent - т.е. диск будет подключаться каждый раз, это подключение будет сохранено. Если поставите $False он будет работать до перезагрузки.

Если появится ошибка: New-SmbMapping : Имя локального устройства уже используется. - то нужно указать другую букву.

Если появится ошибка: New-SmbMapping : Сетевой пароль указан неверно. - значит у нас нет возможности пройти аутентификацию под этим пользователем и нужно использовать другого.

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

#Тут мы заполняем логин и пароль пользователя которым хотим подключиться
$Cred = Get-Credential
#Тут мы устанавливаем сессию с тем компьютером, к которому подключаемся. 
#После -ComputerName можно написать как имя, так и адрес
$Session = New-CimSession -Credential $Cred -ComputerName 192.168.3.140
#Ну и последнее - делаем подключение заменив путь после -RemotePath на свой
New-SmbMapping -LocalPath S: -RemotePath "\\192.168.3.140\Folder1" -CimSession $Session

Если диск в проводнике не отобразился либо перезагружаем компьютер или сервис:

Stop-Process -ProcessName explorer

Если у вас появилась ошибка вроде: New-CimSession : The WinRM client cannot process the request. If the authentication scheme is different from Kerberos.. - это значит что вы не в домене и метод ацетификации у вас не Kerberos. Для того что бы это исправить самый простой способ сделать следующее:

winrm qc
#Звездочка в конце значит, что все возможные компьютеры будут добавлены в список доверенных. 
#Я бы советовал заменить звездочку на IP.
Set-Item wsman:\localhost\Client\TrustedHosts -value *

Если уж и это не помогло и выходит ошибка, то возможно проблема с политиками либо фаерволом.

Второй способ - работает с версии PS 3.0 и перезагружать explorer не понадобилось. Для того что бы подключиться под пользователем, под которым мы зашли делаем:

New-PSDrive -Name l -PSProvider FileSystem -Root "\\192.168.3.140\Folder1" -Persist $True

Где:
-Name - буква диска
-Root - сетевой путь к папке
-Persist - в случае $True будет подключаться после каждой загрузки, $False - будет отключаться
-PSProvider - тут оставляем FileSystem. Это часть говорит что нам нужно получить доступ к файловой системе.

Для того, что бы подключиться под другим пользователем:

#Вводим учетные данные пользователя
$Cred = Get-Credential
#Подключение аналогично предыдущему пункту, за исключением -Credential, тут вводим переменную, которую объявили выше
New-PSDrive -Name l -PSProvider FileSystem -Root "\\192.168.3.140\Folder1" -Credential $Cred -Persist

Могут появиться ошибки, которые описаны выше.

Отключить диск, в обоих способах можно так:

Remove-PSDrive -name "L" -Force

Где -name - буква под которой у нас подключено устройство.

У меня на этом моменте появляется ошибка: Remove-PSDrive : Cannot find drive. A drive with the name 'L' does not exist.
Но именно этот диск все равно удаляется.

...

Теги: #powershell


Популярные тэги
О блоге
Этот блог представляет собой конспекты выученного материала, преобретенного опыта и лучшие практики в системном администрировании и программировании.