Копировать папку с удаленного компьютера (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.

Другие вопросы по тегам