0

いくつかの行と日付列を持つCSVファイルがあります。日付が30日以上経過しているすべての行を取得したいと思います。これが私の最善の試みです:

$Data = Import-CSV "H:\Data.csv"
$CutoffDate = (Get-Data).AddDays(-30)
$Data | Where-Object {$_.Date -lt $CutoffDate}

これは何も返しません。30日より古い日付の行が間違いなくあります。私の推測では、それ$_.Dateは日付として認識されていませんが、そうするための方法に困惑しています。誰かが私をここで正しい方向に向けることができますか?ありがとう。-アル

4

1 に答える 1

3

を使用してデータをインポートするImport-CSVと、すべてのプロパティが文字列として作成されます。日付でフィルタリングするには、日付をdatetimeオブジェクトにする必要があります。サンプルの2行目(Get-DataではなくGet-Date)にもタイプミスがありました。これを試して:

$Data = Import-CSV "H:\Data.csv"
$CutoffDate = (Get-Date).AddDays(-30)
$Data | Where-Object {$_.Date -as [datetime] -lt $CutoffDate}

必要に応じて、次のように組み合わせることができImport-CSVます。

$CutoffDate = (Get-Date).AddDays(-30)
$Data = Import-CSV "H:\Data.csv" | Where-Object {$_.Date -as [datetime] -lt $CutoffDate}
于 2013-03-07T17:27:22.547 に答える