Подключение к сетевой папке с именем пользователя / паролем в 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