2016-04-07 4 views
0

PowerShellのスクリプティングはとても新しいものです。私は、ファイル名に日付と時刻を含む既存のファイルを上書きしようとしています。既存のファイルをファイル名として日付で上書きする

ここは私が使っているものです。

$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 

しかし、実行している時に、それが出て、ファイル

を言うエラーで返されます:それは別のプロセスによって

を使用されているため、プロセスはファイルにアクセスできません、私はあなたたちがこれで私を助けてくれることを願っています。ありがとう!

+1

'Export-CSV'がまだ進行中の間に' Out-File'が呼び出されています。最後のパイプを処理する前にエクスポートが終了するようにこれを変更できますが、 'Export-CSV'はすでにファイルを書き込んでいます。 'Out-File'は必要ありません。 –

+0

ファイル名の一部として時間とともにGet-Dateを使用しているため、Export-CSVだけでファイルを上書きすることはありません。 – lapsantos

+1

あなたは何を意味するのか分かりませんし、 '$ Path'getが作成した部分を表示せずに、私が意味することを明確にするだけです:' Export-CSV'と 'Out-File'は**同じもの**ファイル。 'procmon'を使って、私がすでに言ったように' Out-File'が完全に冗長に見えていることを確認することができます。 –

答えて

0

ConvertTo-Csvを使用しないでください。Export-CSVを試してください。

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

このエラーは、ファイル($ path)を同時に読み書きしようとしているという事実にあります。

これは、同じファイルに追加する前にファイルを作成してエラーを取り除くことを停止します。Export-CSV

関連する問題