Powershell返回在pscp中使用变量时不支持本地副本

时间:2016-04-12 13:42:49

标签: powershell ssh sftp winscp pscp

我使用变量和pscp命令一直在努力。

ForEach ($Server in $Servers)
{
.\pscp.exe -pw $password create_ssh $myUsername@$Server:/home/$myUsername/create_ssh
.\plink.exe -pw $password $myUsername@$Server -C "uname -r"
}

输出

Local to local copy not supported
2.6.32-573.1.1.el6.x86_64

当我尝试指定主机名不使用变量时,传输文件没有任何问题。 但是,如果我尝试使用变量$ Server,我收到错误“不支持本地副本” 我认为变量本身可能存在问题但是。\ plink工作没有任何问题

我曾尝试使用逗号,转义@,完整路径等。似乎没有任何工作。 我不能使用winscp.dll,因为在这种特殊情况下我需要自动接受主机密钥(这是不安全的,但仅限于这种情况) - 这只是由pscp提供的。

非常感谢!

1 个答案:

答案 0 :(得分:0)

我知道这已经很老了,但我偶然发现了这个问题。事实证明,您需要使用子表达式运算符$()作为服务器变量,如下所示:

$($Server)

所以你的命令看起来像这样:

.\pscp.exe -pw $password create_ssh $myUsername@$($Server):/home/$myUsername/create_ssh
.\plink.exe -pw $password $myUsername@$($Server) -C "uname -r"