在linux虚拟机上调用- azvmruncommand,参数顺序错误



我使用invoke-AzVmRunCommand在RHEL7 linux机器上运行bash脚本。我的bash脚本需要按正确顺序输入10个以上的参数。

我使用参数为例,在运行脚本中使用Invoke-AzVMRunCommand在虚拟机?传递参数有问题,但参数顺序仍然错误。

$params = [ordered]@{"param1"="10.1.1";"param2"="Dev";"param3"="Development";"param4"="03";"param5"="172.30.0.27";"param6"="172.30.0.28";"param7"="01"}               
Invoke-AzVMRunCommand -ResourceGroupName "$(resourceGroupName)" -VMName "${vmName}" -CommandId "RunShellScript" -ScriptPath "$(System.ArtifactsDirectory)/scripts/bash.sh" `
-Parameter $params

bash.sh:

#!/bin/bash
echo $@

我期望输出为10.1.1。Dv开发03…等等,但我得到3 dev 10.1.1等参数

请使用arg作为参数,而不是param,并且顺序相反:

$params = [ordered]@{"arg7"="10.1.1";"arg6"="Dev";"arg5"="Development";"arg4" ="03";"arg3"="172.30.0.27";"arg2"="172.30.0.28";"arg1"="01"}

应该可以。

这是一个可行的解决方案:

更新bash.sh为参数

使用标志
#!/bin/bash
echo $@
while getups ":a:b:c:d:e" opted
case $opt in
a) version="OPTARG"
;;
b) env="OPTARG"
;;
c) team="OPTARG"
;;
d) item_count="OPTARG"
;;
e) ip_addr="OPTARG"
;;
?) echo "invalid options -$OPTARG" >&2
;;
esac
done

并将参数作为

传递
$params = [ordered]@{"param1"="-a `"10.1.1`"";"param2"="-b `"Dev`"";"param3"="-c `"Development`"";"param4"="-d `"03`"";"param5"="-e `"172.30.0.27`""}               
Invoke-AzVMRunCommand -ResourceGroupName "$(resourceGroupName)" -VMName "${vmName}" -CommandId "RunShellScript" -ScriptPath "$(System.ArtifactsDirectory)/scripts/bash.sh" `
-Parameter $params

相关内容

  • 没有找到相关文章

最新更新