.count%20%E3%81%A7%E9%81%A9%E5%88%87%E3%81%AA%E6%95%B0%E5%80%A4%E3%82%92%E8%BF%94%E3%81%99%E3%81%AB%E3%81%AF%E3%81%A9%E3%81%86%E3%81%99%E3%82%8C%E3%81%B0%E3%82%88%E3%81%84%E3%81%A7%E3%81%99%E3%81%8B%3F.png)
フォルダー内のファイルを数えるなどしてアイテムの数を取得しようとすると(gci).count
、PowerShell は空のリストや 1 つのアイテムのみを含むリストに対しては出力を返しません。ただし、複数のアイテムを含むリストの場合は正常に機能します。
PowerShell ですべてのケースに適切な数値を返すにはどうすればよいですか? つまり、空のリストの場合は実際のゼロを出力し、単一項目のリストの場合は 1 を出力するにはどうすればよいですか?
私の特定の使用例は、上記の関連質問でさらに説明されているように、gci
コマンドの出力を にパイプした結果のリスト内の項目の数を取得することですwhere
。
答え1
これは、PowerShell が 1 つの項目の配列を返すときに、その配列をその単一の項目に単純に折りたたむという事実に関係しています。
バージョン3より前では、期待されるプロパティを持たないオブジェクトが生成されcount
、結果は空になります。これはバージョン3で「修正」されました。バージョン3。
したがって、2 つの選択肢があります。
- Powershell v3 にアップグレード
結果を常に配列型としてラップする次の回避策を適用します
@()
。@(gci).count