我可以远程登录 MachineA和MachineB(使用RDP)并从位置\ MachineA.cloudapp.net \ C $ \ temp复制一个文件夹'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?
可能我错过了一些简单直接的东西!
答案 0 :(得分:0)
你可以看看Bruce Payette精美书中第13章的Forwarding credentials in multihop environments。
您可能需要CredSSP机制,使您能够通过可信中介将您的凭据安全地传递到目标计算机。
答案 1 :(得分:0)
需要在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上的答案。