Arrays [数组]::Reverse()方法不适用于获取内容返回对象

Arrays [数组]::Reverse()方法不适用于获取内容返回对象,arrays,powershell,Arrays,Powershell,我正在编写一个脚本来安装/卸载一组软件。某些软件必须在其他软件之前安装,卸载时需要按相反顺序进行。我正在尝试将此脚本设计为读取包含所有.msi文件路径的文本文件。通过这种方式,我可以按照适当的顺序读取它们并获取内容,然后如果需要卸载它们,我可以读取相同的文件并反转阵列 我是powershell新手,但据我所知,get对象返回的对象类型为[array]。on Get Content没有指定返回类型,但是每次讨论Get Content on stack overflow时都将输出描述为数组 问题是:

我正在编写一个脚本来安装/卸载一组软件。某些软件必须在其他软件之前安装,卸载时需要按相反顺序进行。我正在尝试将此脚本设计为读取包含所有.msi文件路径的文本文件。通过这种方式,我可以按照适当的顺序读取它们并获取内容,然后如果需要卸载它们,我可以读取相同的文件并反转阵列

我是powershell新手,但据我所知,get对象返回的对象类型为[array]。on Get Content没有指定返回类型,但是每次讨论Get Content on stack overflow时都将输出描述为数组

问题是: 当我将Get Content的输出存储到变量
$data=Get Content-Path“C:\my\data.txt”
时,我会打印$data
write host$data中存储的内容
我会得到预期的输出:

line 1
line 2
line 3
etc...
但是

当我尝试反转时,
$data=[array]::反转($data)
。它返回
null

当我手动创建一个数组
$letters=@(“a”、“b”、“c”)
并将其反转时
$letters=[array]::反转($letters)
,则
写入主机$letters
的输出如预期:

c
b
a
问题是 为什么我对
[array]:reverse($data)
的调用返回空值?而不是像我在后一个示例中所期望的那样执行::reverse($letters)


注意:这两个示例之间的唯一区别是我如何创建数组。因此,要么
get content
的返回类型不是数组,要么它们是我所缺少的返回数组中唯一不同的部分。

我想我可以分享,我可以使用不同的代码行来实现我的目标

$data=($data[($data.Length-1)…0])

这反转了我的获取内容返回对象。但是它没有回答我的问题,为什么reverse方法返回null。

the
[array]::reverse()
方法不反向输出数组,它只是在适当的位置将其反转,因此给定:

$x = 'A','B','C'
[array]::reverse($x)
$x
这将产生:

C
B
A
如果要使用与现有数组相反的第二个变量,可以将该数组克隆到第二个变量,然后反转第二个变量中包含的数组:

$x = 'A','B','C'
$y = $x.clone()
[array]::reverse($y)

在这一点上,
$x
='A'、'B'、'C'而
$y
='C'、'B'、'A'。

我认为这仅仅是一个期望错位的情况,或者至少是一个方法,出于性能原因,在某种程度上,人们可能会觉得典型或方便:不返回任何东西(在C#视图中,返回类型是)。指定一个不向变量返回任何内容的方法将变量设置为
$null
,这正是PowerShell的神奇之处。这很有意义。我有很多其他语言的编程背景,而鲍威尔的行为与我在大多数语言中预期的完全不同。一旦我在我的电脑上尝试,我会接受你的答案