2016-04-07 28 views
0

Ich bin sehr neu bei PowerShell-Skripts. Ich versuche, eine vorhandene Datei mit Datum und Uhrzeit in ihrem Dateinamen zu überschreiben.Überschreiben Sie eine vorhandene Datei mit Datum als Dateiname

Hier ist was ich benutze.

$LogName = "Security" 
$EventID = 4725 
$Date = ((get-date).addDays(-1)) 
$CurrentDate = Get-Date 
$CurrentDate = $CurrentDate.ToString('MM-dd-yyyy_hh.mm.ss') 
get-eventlog $LogName $EventID -after $Date | Export-CSV $Path -notypeinformation | Out-File -Filepath $Path -Append 

Doch bei Betrieb, gibt es mit einem Fehler, der

Out-File sagt: Der Prozess kann nicht auf die Datei zugreifen können, weil sie von einem anderen Prozess verwendet wird

I Ich hoffe, ihr könnt mir dabei helfen. Vielen Dank!

+1

'Out-File' wird aufgerufen, während' Export-CSV' noch läuft. Sie können dies so ändern, dass der Export beendet wird, bevor die letzte Pipe verarbeitet wird, aber "Export-CSV" schreibt die Datei bereits. Es gibt keine Notwendigkeit für Out-File ?! –

+0

Es überschreibt die Datei nicht nur mit dem Export-CSV allein, weil ich Get-Date mit Stunden als Teil des Dateinamens verwende. – lapsantos

+1

Nicht sicher, was du meinst und du hast uns nicht den Teil gezeigt, wo der '$ Pfad' erstellt wurde, sondern nur um zu verdeutlichen, was ich meine: Sowohl 'Export-CSV' als auch 'Out-File' schreiben an den gleichen ** Datei. Sie können 'procmon' verwenden, um dies zu überprüfen, aber wie ich bereits sagte, die 'Out-File' sieht für mich völlig überflüssig aus. –

Antwort

0

Versuchen Sie mit ConvertTo-Csv nicht Export-CSV.

Get-EventLog $LogName $EventID -after $Date | ConvertTo-Csv -NoTypeInformation | Out-File -Filepath $Path -Append 

Der Fehler ist auf die Tatsache, dass Ihr versucht, in eine Datei ($ path) zur gleichen Zeit zu lesen und zu schreiben.

Dies wird Export-CSV stoppen Erstellen einer Datei vor dem Anhängen an die gleiche Datei, den Fehler ausschneiden.

Verwandte Themen