2

私はPowerShellを初めて使用し、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は最初の位置パラメーターである「プロパティ」にバインドされます。

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 に答える