arrays - 数组和分组对象的PowerShell问题
问题描述
我在按环境对一组对象进行分组时遇到问题。以下脚本显示了三个环境,每个环境中都有服务器。现在,我试图按组循环这些对象,但环境名称出现错误。以下是我的示例逻辑:
$array = @(("DEVELOPMENT", ("SRV1")), ("QA", ("SRV2", "SRV3")), ("PRODUCTION", ("SRV4", "SRV5")))
ForEach ($system in $array) {
$envName = $array[0]
ForEach ($hostname in $system[1]) {
Write-Host ("Result for " + $hostname + " in " + $envName)
}
}
变量名 $envName 总是返回相同的错误结果。
[0]:"DEVELOPMENT"
[1]:"SRV1"
如何按以下方式对 $array[0] 和 $system[1] 进行分组和循环?
DEVELOPMENT = SRV1
QA = SRV2, SRV3
PRODUCTION = SRV4, SRV5
解决方案
另一种选择是创建一个对象数组而不是嵌入的字符串数组。
class Server
{
[string]$Environment
[string]$ServerName
}
$Development = @("SRV1")
$Qa = @("SRV2", "SRV3")
$Production = @("SRV4", "SRV5")
$Array = @()
foreach ($System in $Development)
{
$Server = [Server]::new()
$Server.ServerName = $System
$Server.Environment = "Development"
$Array += $Server
}
foreach ($System in $Qa)
{
$Server = [Server]::new()
$Server.ServerName = $System
$Server.Environment = "QA"
$Array += $Server
}
foreach ($System in $Production)
{
$Server = [Server]::new()
$Server.ServerName = $System
$Server.Environment = "Production"
$Array += $Server
}
foreach ($System in $Array)
{
Write-Host "Result for $($System.ServerName) in $($System.Environment)"
}
推荐阅读
- c++ - 如何将 QVariant 转换为 QDomNode
- angular - 未找到 e 的组件工厂。你把它添加到@NgModule.entryComponents 了吗?
- lisp - #1# 不是符号或 lambda 表达式
- c++ - c++ 使用类成员作为模板参数
- python - 预期的 str、bytes 或 os.PathLike 对象,而不是 NoneType
- python-3.x - 通过求解集查找根
- c# - 无法返回 XLWorkbook 中工作表中单元格的值
- typo3 - 错字3删除重复的og:标签
- function - Symfony - 连接表 API 返回
- android - 从我的启动器应用程序中显示当前正在运行的应用程序的对话框