1
私はインポートするCSVファイルを持っています。列の元のデータを削除して更新された形式に置き換えるには、列の形式(backed_up_ts)を変更する必要があります。foreachを使用して配列の値を変更します
列の各行の元のデータは次のようになります
$csv = Import-Csv -Path "C:\Users\user\Desktop\NewReport.csv" | Select display_client_name, backed_up_ts
$csv = foreach ($budate in $csv.backed_up_ts) {
$budate = $budate.Substring(3)
$budate = $budate.Replace("MDT", "")
$budate = $budate.Replace("MST", "")
$budate = $budate.Split(" ")
$budate = $budate[1] + " " + $budate[2] + " " + $budate[5]
$budate = ($budate | Get-Date -Format d)
:
Tue Sep 13 07:46:26 MDT 2016
それは日付と比較することができるように自分のコードの最初の部分は、すべての行をフォーマットここからは、更新された形式($budate
の値)をとり、$csv.backed_up_ts
配列の元のデータを置き換える必要があります。
ただし、$budate
の値はforeachループ(3/30/16)のオブジェクトの最後の値のみです。
$csv.backed_up_ts
の値は、元の形式(水曜日、8月30日、EST、2016)で配列に残ります。
元の配列$csv.backed_up_ts
は、$budate
によって作成された調整値で置き換える必要があります。
ありがとうございました。
だから - あなたのフォーマットでそれをしようとして、それを受け入れていません。私はさらに説明しましょう。 ヘッダ2の元のデータは "Wed Mar 30 10:03:45 MDT 2016" です。foreachの部分では - 私は多くのデータを取り除き、日付に変換する必要があります。 '$ csv.header2 $ item = $ item.replace(" MDT "、" ") これはデータを日付に変換できる形式にします。 私はそれを日付に変換すると、あなたのコード '$ item.header2 = $ item.header2 -replace *、$ item'を試します。 しかし、これはうまくいきません。 –
質問を更新したり、達成しようとしていることをコメントに追加できますか?おそらくもっと良い方法があります。 "Wed Mar 30 10:03:45 MDT 2016"の形式の値の場合、正確に何を変更したいのですか? –
-replaceパラメータがワイルドカード*を受け入れるなら、あなたのコードはうまくいくので、そのオブジェクト内のすべてを削除し、完全に置き換えます。また、静的な '2'で置き換えることもできません。動的変数に置き換えられます。 –