如何将字符串连接到powershell中嵌套数组内的值?
我有一个嵌套数组@'1'、'3'、@'5'、'7'、'9'、@'2'、'4'、'6' 以下是上述模块的输出:如何将字符串连接到powershell中嵌套数组内的值?,powershell,powershell-2.0,powershell-3.0,powershell-4.0,powercli,Powershell,Powershell 2.0,Powershell 3.0,Powershell 4.0,Powercli,我有一个嵌套数组@'1'、'3'、@'5'、'7'、'9'、@'2'、'4'、'6' 以下是上述模块的输出: Object type: Array Member count: 2 Values: 1 3 Object type: Array Member count: 3 Values: 2 4 6 Object type: Array Member count: 3 Values: 5 7 9 我试图使用下面的代码将端口组连接到嵌套数组中的值 $port = "Port
Object type: Array
Member count: 2
Values: 1 3
Object type: Array
Member count: 3
Values: 2 4 6
Object type: Array
Member count: 3
Values: 5 7 9
我试图使用下面的代码将端口组连接到嵌套数组中的值
$port = "Port Group-"
$portarr = $podNarr | ForEach-Object {
$port + $_
}
Write-Output `n
$portarr | ForEach-Object {
Write-Host Values: $_
}
上述代码生成的输出为:
Values: Port Group-1 3
Values: Port Group-2 4 6
Values: Port Group-5 7 9
我希望输出为,@'Port Group-1'、'Port Group-3'、@'Port Group-5'、'Port Group-7'、'Port Group-9'、@'Port Group-2'、'Port Group-4'、'Port Group-6'
如何实现我的目标?你需要两个循环。一个循环通过外部数组,后者循环通过嵌套数组。foreach不行,因为迭代和更改数组是互斥的操作
$arr = @(@('1','3'), @('5','7','9'), @('2','4','6'))
# Here we traverse through the outer elements
for($a = 0; $a -lt $arr.length; ++$a) {
# Process each nested array and update its value
for($b = 0; $b -lt $arr[$a].length; ++$b) {
$arr[$a][$b] = $("Port group-{0} "-f $arr[$a][$b])
}
}
# Output
$arr | ForEach-Object {
Write-Host Object type: $_.gettype().BaseType.name
Write-Host Member count: $_.count
Write-Host Values: $_
}
Object type: Array
Member count: 2
Values: Port group-1 Port group-3
Object type: Array
Member count: 3
Values: Port group-5 Port group-7 Port group-9
Object type: Array
Member count: 3
Values: Port group-2 Port group-4 Port group-6
我有这样的建议
@(@('1','3'), @('5','7','9'), @('2','4','6')) | foreach{
"Values: " + ($_|foreach{"Port Group-$_"})
}
输出:
如果不强制输出成为阵列,Powershell将展开阵列。 可以通过在数组前面加一元逗号强制执行此操作,该逗号将数组包装在另一个1元素数组中。当该零件展开时,原始阵列将保留 差不多
$a = @(@('1','3'), @('5','7','9'), @('2','4','6'))
$b = $a | ForEach-Object {
$c = foreach ($port in $_) { 'Port Group-{0}' -f $port }
# output this array as ARRAY by wrapping it in a 1-element new array using the unary comma
,$c
}
Write-Host $b[0]
Write-Host $b[1]
Write-Host $b[2]
输出
Port Group-1 Port Group-3
Port Group-5 Port Group-7 Port Group-9
Port Group-2 Port Group-4 Port Group-6
@djangunched-f替换模板字符串中的编号占位符以格式化新字符串。占位符的形式为{0}、{1}等。在本例中,它填充模板字符串“Port Group-{0}”中{0}所在的$portvalue。你可以用这个做更多的事情,在这个评论的链接上有一个乐。
$a = @(@('1','3'), @('5','7','9'), @('2','4','6'))
$b = $a | ForEach-Object {
$c = foreach ($port in $_) { 'Port Group-{0}' -f $port }
# output this array as ARRAY by wrapping it in a 1-element new array using the unary comma
,$c
}
Write-Host $b[0]
Write-Host $b[1]
Write-Host $b[2]
Port Group-1 Port Group-3
Port Group-5 Port Group-7 Port Group-9
Port Group-2 Port Group-4 Port Group-6