特定のディレクトリのファイルに対してクエリを実行するための日付変数があります。下の例のように、私は、何の問題各ファイルをGCIことができません:PowerShell v2.0 - DateTimeへの変換
File1.xml 14/07/2016 17:09
File2.xml 15/07/2016 09:32
だから私は、すべての特定の年齢の範囲の間でファイルと私の基準を探しています:
$Today4am = Get-Date -Hour 4 -Minute 0 -Second 0
:より
古いです
しかし、その後より
$Yesterday4am = $Today4am.AddDays(-1)
変数出力
$Today4am = 15 July 2016 04:00:00
$Yesterday4am = 14 July 2016 04:00:00
したがって、変数は日付をファイル自体とは異なる形式でパイプするため、比較を行うには両方の形式が同じであることを確認する必要があります。
$Filter = gci c:\temp\*.xml |
Where {$_.LastWriteTime -gt $Yesterday4am -and {$_.LastWriteTime-lt $Today4am}}
演算子「-gt」への不正な引数:ここでは元のスクリプトで14/07/2016 0 4時00分」に「14/07/2016午前17時09分52秒」を比較することができませんでした"エラー: "値" 14/07/2016 04:00 "を" System.DateTime "に変換できません。エラー: "文字列が有効なDateTimeとして認識されませんでした。
は、だから私は-format "DD/MM/YYYYのHH:MM" を追加する変数を変換しようを、これが正しい形式を出力します。しかし$ Yesterday4am = $ Today4am.AddDays変換(-1)-format "DD/MM/YYYYのHH:MM"はエラーを生成します。
Cannot convert value "15/07/2016 04:00" to type "System.DateTime". Error: "String was not recognized as a valid DateTime."
は、どのように私は両方の日付形式が同意を得ることができますか?
| Where {$_.LastWriteTime -gt (Get-Date $Yesterday4am) -and {$_.LastWriteTime-lt $Today4am}}
そして、あなたはあなたが
Where
オペレータの外
Get-Date
変換を行うことができ、パフォーマンスを心配している場合:
スーパー!ありがとうございました。だから-filterscriptは私のスクリプトの鍵です - それが何であるかはわかりませんが、それを探すでしょう – JDGEEK
これは実際にWhere-Object(Where)のデフォルトパラメータですが、人々が知るように私が何を呼んでいるかを指定します。これはおそらく、{}式の大括弧の中に{}式を使用したためです。 –