Копировать папку с удаленного компьютера (Azure) на удаленный компьютер
У меня есть две машины, которые говорят Machine-A: Azure VM роль на облаке. Machine-B: машина в моем сетевом домене.
Я могу удаленно войти как в MachineA, так и в MachineB (используя RDP) и скопировать, скажем, папку 'temp' из папки location \MachineA.cloudapp.net\C$\temp в \MachineB\C$\
Как мне достичь этого программно, желательно с помощью сценария powershell?
Я старался:
$rm = new-object RemoteMachine
$pass = ConvertTo-SecureString -AsPlainText $rm.Password -Force
$Cred = New-Object System.Management.Automation.PSCredential -ArgumentList $rm.Username,$pass
Invoke-Command -ComputerName $rm.MachineName -Credential $Cred -ScriptBlock{
# Copy folder
}
Где RemoteMachine находится:
public class RemoteMachine
{
public string MachineName="MachineA.cloudapp.net";
public string Username="remote";
public string Password="password";
}
}
Сбой при входе в систему, хотя я использую те же учетные данные для RDP. У меня есть еще одно сомнение, даже если вход в систему возможен, тогда как MachineA узнает о MachineB?
Возможно, мне не хватает чего-то простого и прямого!
2 ответа
Вы можете взглянуть на Переадресацию учетных данных в среде с несколькими магазинами в главе 13 прекрасной книги Брюса Пайетта.
Возможно, вам нужен механизм CredSSP, который позволяет безопасно передавать свои учетные данные на целевой компьютер через доверенного посредника.
В вашей виртуальной машине необходимо включить удаленное взаимодействие PowerShell:
PS> Enable-PSRemoting
После этого вы сможете удаленно передать учетные данные администратора на этом компьютере:
Invoke-Command -ComputerName MachineA -Credential username -ScriptBlock {
# Copy folder
}
Если username
является учетной записью домена, обязательно включите домен (например, DOMAIN\username
). PowerShell предложит вам ввести пароль.
Поскольку вы копируете с MachineA на MachineB, вы, вероятно, столкнулись с проблемой двойного перехода. Чтобы подключиться к MachineB с MachineA, PowerShell снова нужны ваши учетные данные (имя пользователя / пароль), а на MachineA их нет. Вы должны включить нечто, называемое CredSSP, чтобы разрешить хранение учетных данных и их совместное использование между компьютерами.
- Компьютер, принимающий учетные данные, должен быть настроен для их получения (т. Е. Действовать как сервер)
- Машина, отправляющая учетные данные, должна быть настроена на их отправку (т. Е. Действовать как клиент)
Смотрите мой ответ на этот вопрос для деталей о включении CredSSP.