当通过 cygwin 从 shell 脚本 运行 时,如何将参数传递给 powershell 脚本?
how to pass parameter to a powershell script when running from a shell script through 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 脚本中使用双引号,但没有用,似乎必须有某种方式我可以传递参数,但可能会遗漏任何语法。
请帮忙。
/usr/bin/ssh $user2@$x "powershell C:/B.ps1 $var1 $var2"
您需要双引号 ("..."
) 而不是单引号 ('...'
) 以便 shell-variable 引用 $var1
和 $var2
待扩展。
通过使用 /
作为路径分隔符——PowerShell 可以将其与 \
互换——你可以避免转义 \
字符从 '...'
过渡到 "..."
时必须 加倍 ;也就是说,以下内容也有效:
/usr/bin/ssh $user2@$x "powershell C:\\B.ps1 $var1 $var2"
我有 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"
您需要双引号 (
"..."
) 而不是单引号 ('...'
) 以便 shell-variable 引用$var1
和$var2
待扩展。通过使用
/
作为路径分隔符——PowerShell 可以将其与\
互换——你可以避免转义\
字符从'...'
过渡到"..."
时必须 加倍 ;也就是说,以下内容也有效:
/usr/bin/ssh $user2@$x "powershell C:\\B.ps1 $var1 $var2"