当从shell脚本通过cygwin运行时,如何将参数传递给powershell脚本?

当从shell脚本通过cygwin运行时,如何将参数传递给powershell脚本?,powershell,shell,ssh,server,cygwin,Powershell,Shell,Ssh,Server,Cygwin,我有一个sh脚本,比如说a.sh,我在其中对windows服务器执行ssh(配置了cygwin),并运行一个B.ps1脚本,该脚本使用a.sh中定义的参数 a.sh的内容: var1="abc" var2="xyz" #sshing to windows box /usr/bin/scp -r -q /home/$user/Jenkins/workspace/job/jobname $user2@$x:/cygdrive/C/ /usr/bin/ssh

我有一个sh脚本,比如说a.sh,我在其中对windows服务器执行ssh(配置了cygwin),并运行一个
B.ps1
脚本,该脚本使用
a.sh
中定义的参数

a.sh的内容

var1="abc"
var2="xyz"

#sshing to windows box
/usr/bin/scp -r -q /home/$user/Jenkins/workspace/job/jobname $user2@$x:/cygdrive/C/
/usr/bin/ssh $user2@$x 'powershell C:\\B.ps1 $var1 $var2'
这是在运行脚本,但没有任何参数,当我在B.ps1中写入主机变量名时,我会得到空白输出,这意味着var1和var2值不会传递给我的ps1脚本

B.ps1的内容

$var1=$args[0]
$var2=$args[1]

Write-Host "var1 is:" $var1
Write-Host "var2 is:" $var2
我曾尝试在我的sh脚本中使用双引号,但没有成功,似乎有某种方法可以传递参数,但可能遗漏了语法上的任何内容

请提供帮助。

/usr/bin/ssh$user2@$x“powershell C:/B.ps1$var1$var2”
  • 为了扩展shell变量引用
    $var1
    $var2
    ,需要双引号(
    “…”
    )而不是单引号(
    “…”

  • 通过使用
    /
    作为路径分隔符(PowerShell可与
    \
    互换接受该分隔符),您无需转义
    \
    字符,而在从
    '…'
    转换到
    '…
    时,必须将转义字符加倍;也就是说,以下方法也会起作用:
    /usr/bin/ssh$user2@$x“powershell C:\\\\B.ps1$var1$var2”

/usr/bin/ssh$user2@$x“powershell C:/B.ps1$var1$var2”
  • 为了扩展shell变量引用
    $var1
    $var2
    ,需要双引号(
    “…”
    )而不是单引号(
    “…”

  • 通过使用
    /
    作为路径分隔符(PowerShell可与
    \
    互换接受该分隔符),您无需转义
    \
    字符,而在从
    '…'
    转换到
    '…
    时,必须将转义字符加倍;也就是说,以下方法也会起作用:
    /usr/bin/ssh$user2@$x“powershell C:\\\\B.ps1$var1$var2”