我的脚本通常会遍历数组中的项目列表,这些项目通常是从其他地方粘贴的,例如 excel 或其他脚本。我目前像这样填充数组:
$vmlist = @(
#group 1
"vmname1"
"vmname2"
# group 2
"vmname3"
"vmname4"
#"vmname5"
)
优点是我可以轻松地用#添加注释或者注释掉行。
缺点是必须手动添加引号。我通常使用 notepad++ 中的正则表达式来添加引号,但使用我的脚本的其他人通常会弄乱引号(缺失或不匹配)。
是否有一个 powershell 技巧可以让我像这样不引用项目列表,理想情况下仍然支持评论。
$vmlist = @(
vmname1
vmname2
vmname3
vmname4
)
我想我可以做这样的事情并通过用 \r\n 拆分、修剪、删除空行、忽略 # 后的文本进行后期处理,最后将其存储到同名数组中,但好奇是否有更聪明/更好的方法。
$vmlist = "
vmname1
vmname2
vmname3
vmname4
vmname5
"
答案1
使用此处字符串从其他地方粘贴文本:
要在 PowerShell 中定义 here-string,您需要使用字符
@
,后跟单引号或双引号,然后是换行符。要结束,请关闭引号并@
在换行符上添加另一个引号:
$vmlist = @"
#group 1
vmname1
vmname2
# group 2
vmname3
vmname4
#vmname5
"@ -split [System.Environment]::NewLine -notmatch "^#"
$vmlist
vmname1 vmname2 vmname3 vmname4
- 优点我可以轻松添加注释或注释掉行
#
; - 缺点是消除…