我有一个从中读取值的YAML配置文件,其结构如下:
hosts:
- name: server1
role:
- role1
services:
- iis
- sql
- name: server2
role:
- role1
- role4
services:
- iis
- name: server3
role:
- role2
services:
- sql_server
我从PowerShell脚本中读取这个YAML配置文件,并将配置存储在名为$config
的变量中
我创建了空数组,然后遍历主机列表,并根据角色存储在相应的数组中,如下所示:
$role1_servers,$role2_servers = @()
$config.hosts | % {
$server_name = $_.name
$_.role | % {
switch($_){
"role1" {
$role1_servers+= $server_name
}
"role2" {
$role2_servers+= $server_name
}
}
}
}
但是PowerShell不是将值添加到相关数组,而是执行字符串连接,而不是将项添加到数组。
例如,当输出$role1_servers
时,它将输出
server1server2
而不是期望的输出
server1
server2
有没有办法将字符串值作为对象添加到数组中,而不是字符串连接?我需要数组中的这些项,以便在稍后阶段迭代特定角色中的所有服务器。
2条答案
按热度按时间mznpcxlj1#
继续我们的评论,我认为最好的方法是创建一个对象数组,其中所有服务器名称和角色都是这样显示的:
现在,您可以筛选出具有特定角色的所有服务器
xdnvmnnf2#
您可以考虑使用PS Gallery中现成的模块来处理YAML。
现在,您可以过滤要查找的值