Подключение к сетевой папке с именем пользователя / паролем в Powershell

Я часто обращаюсь к общим сетевым папкам в Powershell, чтобы получить файлы и т. Д. Но если для общего ресурса требуются имя пользователя / пароль, Powershell не запрашивает их, в отличие от Windows Explorer. Если я сначала подключусь к папке в Windows Explorer, то Powershell разрешит мне подключиться.

Как я могу аутентифицировать себя в Powershell?

6 ответов

Решение

На первый взгляд очень хочется использовать New-PSDrive предоставляя это полномочия.

> New-PSDrive -Name P -PSProvider FileSystem -Root \\server\share -Credential domain\user

Не удается!

 New-PSDrive: невозможно получить динамические параметры для командлета. Динамические параметры для NewDrive не могут быть получены для поставщика FileSystem. Поставщик не поддерживает использование учетных данных. Пожалуйста, выполните операцию снова без указания учетных данных. 

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

Поэтому вы можете использовать net use или WScript.Network объект, вызывающий MapNetworkDrive функция:

$net = new-object -ComObject WScript.Network
$net.MapNetworkDrive("u:", "\\server\share", $false, "domain\user", "password")

Редактировать для New-PSDrive в PowerShell 3.0

Очевидно, с более новыми версиями PowerShell, New-PSDrive Командлет работает для сопоставления сетевых ресурсов с учетными данными!

New-PSDrive -Name P -PSProvider FileSystem -Root \\Server01\Public -Credential user\domain -Persist

Это не специфичный для PowerShell ответ, но вы могли бы сначала пройти аутентификацию на общем ресурсе, используя "NET USE":

net use \\server\share /user:<domain\username> <password>

А затем делайте все, что вам нужно сделать в PowerShell...

PowerShell 3 поддерживает это прямо из коробки.

Если вы застряли в PowerShell 2, вам в основном придется использовать устаревшую версию net use команда (как предлагалось ранее).

Вы можете использовать командлет New-SmbMapping.

      New-SmbMapping -RemotePath '\\server\path' -UserName 'server\user' -Password 'passwort'

Вам не обязательно использовать параметр -LocalPath, поэтому он не монтируется как диск. Он просто устанавливает соединение с общим ресурсом.

На той же машине, я стараюсь так же NET USE команда из обычной командной строки и из командной строки PowerShell v2:

NET USE Link: SharePoint

In CMD это работает просто отлично.

In PS, он говорит, что работает нормально, и диск сопоставлен. Тем не менее, в основном состояние диска, как указано при вводе просто NET USE пусто, и отображение диска не работает (т.е. вы не можете получить данные с подключенного диска).

Это может быть проблема SharePoint, так как NET USE иногда PowerShell работает, иногда нет, но все же кажется, что есть разница между CMD и PS.

Я хотел бы поделиться своим опытом здесь.

Я часто использую сетевой диск для извлечения информации с удаленного Сервера. Если вы используете Powershell 2.0 на удаленном сервере.

Лучший вариант - использовать команду NET USE.

Net use \\10.10.10.10\SharedDrive "password@123" /User:Abcd.com\username
Другие вопросы по тегам