繁体   English   中英

[array]::Reverse() 方法不适用于 Get-Content 返回 object

[英][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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM