空のリストまたは単一項目のリストに対して (gci).count で適切な数値を返すにはどうすればよいですか?

空のリストまたは単一項目のリストに対して (gci).count で適切な数値を返すにはどうすればよいですか?

関連している:
特定の月内に変更されたファイルをカウントするスクリプトを作成するにはどうすればよいでしょうか?

フォルダー内のファイルを数えるなどしてアイテムの数を取得しようとすると(gci).count、PowerShell は空のリストや 1 つのアイテムのみを含むリストに対しては出力を返しません。ただし、複数のアイテムを含むリストの場合は正常に機能します。

ここに画像の説明を入力してください

PowerShell ですべてのケースに適切な数値を返すにはどうすればよいですか? つまり、空のリストの場合は実際のゼロを出力し、単一項目のリストの場合は 1 を出力するにはどうすればよいですか?

私の特定の使用例は、上記の関連質問でさらに説明されているように、gciコマンドの出力を にパイプした結果のリスト内の項目の数を取得することですwhere

答え1

これは、PowerShell が 1 つの項目の配列を返すときに、その配列をその単一の項目に単純に折りたたむという事実に関係しています。

バージョン3より前では、期待されるプロパティを持たないオブジェクトが生成されcount、結果は空になります。これはバージョン3で「修正」されました。バージョン3

したがって、2 つの選択肢があります。

  1. Powershell v3 にアップグレード
  2. 結果を常に配列型としてラップする次の回避策を適用します@()

    @(gci).count

関連情報