问题描述
我有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脚本中使用双引号,但是没有用,似乎必须通过某种方式可以传递参数,但是语法上可能缺少任何内容。
请帮助。
解决方法
/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"