我尝试将具有PowerShell脚本的文件从Windows Server复制到具有SCP的远程服务器。因此,我导入了Posh-SSH Modul。我需要使用带有公钥/私钥的身份验证。我使用的SCP命令如下:
Set-SCPFile -ComputerName "RemoteServer" -Credential "Username" -KeyFile "$SSHKeyFile" -RemotePath '$RemotePath' -LocalFile '$OutFile'
当我不对密钥对使用密码短语时,可以将密码留空,然后单击“确定”。如果我使用密码短语,则输入密码短语作为密码,然后单击“确定”。两种选择都可以正常工作。
但是因为我想将此作为脚本运行,所以我无法在每次脚本运行时都单击“确定”。因此,我尝试将凭据保存在变量中。但是随后Set-SCPFile不再起作用。我总是得到以下凭证请求窗口。
以下代码是我如何尝试获取凭据的方法。 首先,我将它们存储在XML文件中。
Get-Credential | Export-CliXml -Path "$Path"
XML文件如下所示。
<Objs Version="1.1.0.1" xmlns="http://schemas.microsoft.com/powershell/2004/04"> <Obj RefId="0">
<TN RefId="0">
<T>System.Management.Automation.PSCredential</T>
<T>System.Object</T>
</TN>
<ToString>System.Management.Automation.PSCredential</ToString>
<Props>
<S N="UserName">User</S>
<SS N="Password">01000000d08c9ddf0115d1118c7a00c04fc297eb01000000ec5297fe98035547a93461b54a3da81f0000000002000098237490343500c000000010000000cef45e19b6629e6c9daa40d058a72699yxyxasd4800000a0000000000a69badaa01054df9ae2904dd25e2786c100000000104e0e84014aac216b445498d34955914000000dedf7c30caa626f3542c8f1cd068af8d18c0e420</SS>
</Props>
</Obj>
</Objs>
然后我可以在脚本中使用以下命令导入它们。
$Credentials = Import-CliXml -Path "$Path"
在其他脚本中,这可以正常工作。有人可以帮我弄这个吗? 非常感谢。 KR