2

我是 PowerShell 的新手,我只是想弄清楚它是如何工作的。

那么,我该如何编写这段代码:

Get-ChildItem C:\ | Sort-Object Length

作为多行代码?我试过这个:

$child_items = Get-ChildItem C:\
Sort-Object $child_items Length

但它没有用。我越来越:

Sort-Object : A positional parameter cannot be found that accepts argument 'Length'.
4

3 回答 3

5

尽管其他答案是使用命名参数传递值的正确方法,但请记住说了get-help Sort-Object什么:

When you use the InputObject parameter to submit a collection of items, 
Sort-Object receives one object that represents the collection. 
Because one object cannot be sorted, Sort-Object returns the entire collection unchanged.

您会发现将 $child_items 传递给-inputobject.

您总是需要使用管道将值传递给-inputobject

于 2013-03-18T10:31:13.347 回答
2

您需要指定 -InputObject 参数。没有它,$child_items 将绑定到第一个位置参数,即 'Property'

Sort-Object -InputObject $child_items Length

更新

我不会删除我的答案,因为它附有评论。我错了,Get-ChildItem 的结果是默认排序的,我得出的结论是,将数组传递给 InputObject 就可以了。显然我错了,请检查@CB 答案。

于 2013-03-18T10:24:15.543 回答
1

这会起作用:

Get-ChildItem C:\ | 
Sort-Object Length

或者对你来说,这也可以;

$child_items = Get-ChildItem C:\
$child_items | Sort-Object Length

您还可以使用反引号作为续行字符。

于 2013-03-18T10:20:12.427 回答