【发布时间】:2019-12-14 21:09:44
【问题描述】:
考虑一下: 这是一个数组,仅包含一项。而数组的项是另一个数组(我称之为列表对象)。 我想获取数组中唯一的列表对象。
我使用foreach来获取列表,但是它把列表对象当作一个数组,返回列表对象的第一项。
$OSName1 = @(
@("win2008r2")
)
$OSName2 = @(
@("win2008r2"),
@("win2012")
)
foreach ($osname in $OSName1) {
write-host $osname[0]
}
foreach ($osname in $OSName2) {
write-host $osname[0]
}
我希望结果的输出是: win2008r2 win2008r2 win2012
但真正的结果是 w win2008r2 赢2012 为什么powershell自动将内部数组扩展到它的父级?
【问题讨论】:
-
我猜它认为第一个只是一个字符串,所以
$osname[0]是第一个字符 (w) -
但是我已经用@() 明确指出它是一个项目
-
"为什么 powershell 会自动将内部数组扩展到它的父级?"因为这就是 PowerShell 的本质,它是一个过分热心的管道 :)
-
如何避免?我尝试添加 @() 但似乎 powershell 没有接受它。
标签: arrays list powershell