【问题标题】:Copy folder from remote machine (Azure) to remote machine将文件夹从远程计算机 (Azure) 复制到远程计算机
【发布时间】:2012-07-09 20:47:58
【问题描述】:

我有两台机器说 Machine-A:云上的 azure vm 角色。 Machine-B:我的网络域上的一台机器。

可以远程登录 MachineA 和 MachineB(使用 RDP),然后将文件夹“temp”从位置 \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呢?

可能我错过了一些简单直接的东西!

【问题讨论】:

    标签: powershell azure powershell-remoting azure-vm-role


    【解决方案1】:

    您可以查看 Bruce Payette 好书第 13 章中的 Forwarding credentials in multihop environments

    您可能需要 CredSSP 机制,该机制使您能够通过受信任的中介将您的凭据安全地传递到目标计算机。

    【讨论】:

      【解决方案2】:

      需要在您的 VM 上启用 PowerShell 远程处理:

       PS> Enable-PSRemoting
      

      然后您应该能够远程进入,并在该计算机上传递管理员的凭据:

      Invoke-Command -ComputerName MachineA -Credential username -ScriptBlock {
      #   Copy folder
      }
      

      如果username 是域帐户,请确保包含域(例如DOMAIN\username)。 PowerShell 将提示您输入密码。

      因为您是从 MachineA 复制到 MachineB,所以您可能会遇到双跳问题。要从 MachineA 连接到 MachineB,PowerShell 再次需要您的凭据(用户名/密码),而 MachineA 上没有这些凭据。您必须启用名为 CredSSP 的功能,以允许在机器之间存储和共享凭据。

      • 必须将接收凭据的机器配置为接收它们(即充当服务器)
      • 必须将发送凭据的机器配置为发送它们(即充当客户端)

      有关启用 CredSSP 的详细信息,请参阅我在 this question 上的回答。

      【讨论】:

      • 没有已经试过了。 :( 没有成功。顺便说一句,即使可以登录,那么 MachineA 将如何知道 MachineB?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多