通过cygwin从Shell脚本运行时,如何将参数传递给Powershell脚本?

时间:2020-08-12 12:51:31

标签: powershell shell ssh server cygwin

我有sh脚本,可以说a.sh,其中我正在对Windows服务器(用cygwin配置)执行ssh并运行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脚本中使用双引号,但是没有用,似乎必须通过某种方式可以传递参数,但是语法上可能缺少任何内容。

请帮助。

1 个答案:

答案 0 :(得分:0)

/usr/bin/ssh $user2@$x "powershell C:/B.ps1 $var1 $var2"
  • 您需要双引号("...")而不是单引号('...')才能扩展壳变量引用$var1$var2

  • 通过使用/作为路径分隔符-PowerShell与\可以互换使用-避免了转义\字符的麻烦,而您必须转义这些字符从'...'过渡到"..."时> double ;也就是说,以下内容也可以工作:
    /usr/bin/ssh $user2@$x "powershell C:\\\\B.ps1 $var1 $var2"

相关问题