[英][array]::Reverse() method not working on Get-Content return object
我正在编写一个脚本来安装/卸载一组软件。 其中一些软件必须先安装,卸载时需要以相反的顺序安装 go。 我正在尝试设计此脚本来读取包含所有.msi 文件路径的文本文件。 这样我可以使用 Get-Content 以适当的顺序读取它们,然后如果需要卸载它们,我可以读取相同的文件并反转数组。
我是 powershell 的新手,但我的理解是 get-object 返回 [array] 类型的 object。 Microsoft 关于 Get-Content 的文档没有指定返回类型,但每次讨论 Get-Content on stack overflow 时都将 output 描述为一个数组。
当我将 Get-Content 的 output 存储到变量$data = Get-Content -Path "C:\my\data.txt"
然后我打印存储在 $data write-host $data
中的内容时,我得到了预期的 output:
line 1
line 2
line 3
etc...
然而
当我尝试反转$data = [array]::Reverse($data)
。 它返回null
当我手动创建一个数组$letters = @("a","b","c")
并反转它$letters = [array]::reverse($letters)
那么write-host $letters
的输出是,正如预期的那样:
c
b
a
为什么我对[array]::reverse($data)
的调用返回 null? 而不是像我在后一个示例中所期望的那样[array]::reverse($letters)
?
注意:这两个示例之间的唯一区别是我创建数组的方式。 因此, get-content
的返回类型不是数组,或者它们与我缺少的返回数组有独特的不同。
我想我会分享我能够使用不同的代码行来实现我的目标。
$data = ($data[($data.Length-1)..0])
这颠倒了我的 Get-Content 返回 object。 但它没有回答我的问题,为什么反向方法返回 null。
[array]::reverse()
方法不会 output 反转数组,它只是将其反转到位,因此给出:
$x = 'A','B','C'
[array]::reverse($x)
$x
那将是 output:
C
B
A
如果您想拥有与现有数组相反的第二个变量,您可以将数组克隆到第二个变量,然后反转包含在第二个变量中的数组:
$x = 'A','B','C'
$y = $x.clone()
[array]::reverse($y)
此时$x
= 'A', 'B', 'C' 而$y
= 'C', 'B', 'A'。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.