如何将数组作为参数传递给PowerShell脚本?

czfnxgou  于 2023-04-30  发布在  Shell
关注(0)|答案(2)|浏览(162)

在Ansible中,我有一个这样的数组:

tab:
  - 'val1'
  - 'val2'

我想执行一个远程脚本,如下所示:

- name: launch Script
  script: "scripts/script.ps1 -tab {{ tab }}"

但是json格式不太好识别([uval1 uval2])。将其转换为PowerShell格式:

$new_tab =  $tab -replace '"','' -replace ']','' -replace '\[','' -split ","

有更好的解决方案吗?

qgelzfjb

qgelzfjb1#

建议使用join()

scripts/script.ps1 -tab {{ tab | join(',') }}

然后它会创建一个字符串,像这样:val1、val2

zaq34kh6

zaq34kh62#

补充4c74356b41's useful answer
如果必须保留列表元素的引号,可以使用以下逻辑:

- name: launch Script
  script: "scripts/script.ps1 -tab {{ '\"' + tab | join('\",\"') + '\"' }}"

这将为每个元素添加双引号,并且PowerShell将能够评估每个字符串(例如。g.扩展变量等。(read more))。如果你想用单引号括起你的元素,你可以这样做:

- name: launch Script
  script: "scripts/script.ps1 -tab {{ "'" + tab | join("','") + "'" }}"

请注意,quote过滤器在这种情况下没有用,因为它是为shell使用而设计的,不会对每个字符串都引用。

相关问题