Ich habe eine CSV-Datei, die ich importieren, und ich brauche das Format einer Spalte (backed_up_ts) zu ändern, um die ursprünglichen Daten in der Spalte zu entfernen und es mit dem aktualisierten Format zu ersetzen.ändern Werte in einem Array mit foreach
die Originaldaten für jede Zeile in der Spalte sieht wie folgt aus:
Tue Sep 13 07:46:26 MDT 2016
Der erste Teil meines Codes jede Zeile formatiert, so dass es zu einem Datum verglichen werden kann:
$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)
Von hier aus muss ich das aktualisierte Format (im $budate
Wert) nehmen und die ursprünglichen Daten im $csv.backed_up_ts
Array ersetzen.
jedoch ist der Wert von $budate
nur der letzte Wert des Objekts in der foreach Schleife (3/30/16).
Der Wert von $csv.backed_up_ts
bleibt in dem Array in seinem ursprünglichen Format (Mittwoch, 30. August, EST, 2016).
Ich brauche das ursprüngliche Array $csv.backed_up_ts
, das durch die koordinierenden Werte zu ersetzen ist, die von $budate
erstellt wurden.
Danke.
Also - in es mit Ihrem Format versuchen, es nicht zu akzeptieren ist. lass mich das weiter erklären. Die ursprünglichen Daten in der Kopfzeile 2 ist "Wed Mar 30 10:03:45 MDT 2016" So in der Foreach-Teil - ich muss loswerden eine Menge der Daten, bevor ich es in ein Datum konvertieren kann. 'foreach ($ item in $ csv.header2) {$ item = $ item.replace ("MDT", "")' Dies wird die Daten in ein Format, das auf ein Datum umgewandelt werden kann. Wenn ich es in ein Datum umwandeln, ich Ihren Code dann versuchen '$ item.header2 = $ item.header2 -replace *, hat $ item' Aber das funktioniert nicht. –
Können Sie Ihre Frage aktualisieren oder einen Kommentar hinzufügen mit dem, was Sie erreichen möchten? Vielleicht gibt es einen besseren Weg. Für einen Wert im Format "Wed Mar 30 10:03:45 MDT 2016", was genau soll er geändert haben? –
Ihr Code würde also funktionieren - wenn der Parameter -replace einen Platzhalter * akzeptiert - würde er alles in diesem Objekt entfernen und es komplett ersetzen. Es kann auch nicht durch eine statische '2' ersetzt werden - es wird durch eine dynamische Variable ersetzt. –