Robocopy как другой пользователь
Проблема: Robocopy не запускается как другой пользователь в Start-Process
Сценарий отлично работает при запуске учетной записи, которая имеет разрешения для обоих расположений файлов, но, похоже, не принимает -credential
пары.
Не уверен, что мое форматирование неверно или я что-то делаю неправильно.
# Create Password for credential
$passw = convertto-securestring "Password" -asplaintext –force
# Assembles password into a credential
$creds = new-object -typename System.Management.Automation.PSCredential -argumentlist "DOMAIN\Username", $passw
# Select a source / destination path, can contain spaces
$Source = '\\Source\E$\Location'
$Destination = '\\Destination\Location Here'
# formats the arguments to allow the credentials to be wrapped into the command
$RoboArgs = "`"$($Source)`" `"$($Destination)`"" + " /e /Copy:DAT"
# Started Robocopy with arguments and credentials
Start-Process -credential $creds Robocopy.exe -ArgumentList $RoboArgs -Wait
2 ответа
Robocopy будет использовать стандартный механизм проверки подлинности Windows.
Поэтому вам, вероятно, необходимо подключиться к серверам, используя соответствующие учетные данные, прежде чем вводить команду robocopy.
Ты можешь использовать net use
сделать это.
net use X: '\\Source\E$\Location' /user:MYDOMAIN\USER THEPASSWORD
net use Y: '\\Destination\Location Here' /user:MYDOMAIN\USER THEPASSWORD
net use X: /d
net use Y: /d
а затем начните ROBOCOPY
Ответ S.Spieker будет работать, но если вы хотите использовать встроенную команду PowerShell и передавать учетные данные в качестве объекта pscredential, вы можете использовать New-PSDrive для подключения дисков:
$passw = convertto-securestring "Password" -asplaintext –force
$creds = new-object -typename System.Management.Automation.PSCredential -argumentlist "DOMAIN\Username", $passw
$Source = '\\Source\E$\Location'
$Destination = '\\Destination\Location Here'
New-PSDrive -Name Source -PSProvider FileSystem -Root $Source -Credentials $creds
New-PSDrive -Name Destination -PSProvider FileSystem -Root $Destination -Credentials $creds
Robocopy.exe \\Source \\Destination /e /Copy:DAT"
Remove-PSDrive -Name Source
Remove-PSDrive -Name Destination
* Я могу ошибаться в Robocopy, прошло уже много лет с тех пор, как я его использовал, но монтаж дисков правильный.