実際に削除されているファイルのログファイルを出力するスクリプトを取得する方法を探しています。誰も私がこれをやり遂げる方法を知っていますか?ここに私の画面があります。Powershellで私の削除スクリプトの結果を印刷するにはどうすればいいですか?
Where-Object { -not $_.PSIsContainer -and $_.LastWriteTime -lt (Get-Date).AddDays(-1) } |
Remove-Item -Force
実際に削除されているファイルのログファイルを出力するスクリプトを取得する方法を探しています。誰も私がこれをやり遂げる方法を知っていますか?ここに私の画面があります。Powershellで私の削除スクリプトの結果を印刷するにはどうすればいいですか?
Where-Object { -not $_.PSIsContainer -and $_.LastWriteTime -lt (Get-Date).AddDays(-1) } |
Remove-Item -Force
あなただけのログがTranscript
と冗長出力を使用することです必要がある場合は、全体の最も簡単な方法。
スクリプトはこのようになりますので、コマンドに-Verbose
が追加されていることに注意してください。
Start-Transcript C:\Logs\Remove.txt
Some-Command | Where-Object { -not $_.PSIsContainer -and $_.LastWriteTime -lt (Get-Date).AddDays(-1) } | Remove-Item -Force -Verbose
Stop-Transcript
その後、C:\Logs\Remove.txt
ファイルはそれぞれ削除されたファイルのために、このようなメッセージを持っています:
VERBOSE: Performing the operation "Remove File" on target "H:\dns.csv".
これはまさに私が探していたものでした、ありがとう! – Guyver
あなたはループが必要になります。
Get-ChildItem -Path $Targets |
Where-Object { -not $_.PSIsContainer -and $_.LastWriteTime -lt (Get-Date).AddDays(-1) } |
ForEach-Object {
$_ | Remove-Item -Force
$_.FullName | Out-File -FilePath $LogFile -Append
}
残念ながら、Remove-Item
コマンドレットはありません-Passthru
パラメータをサポートしているため、これは簡単になります。
Where-Object { -not $_.PSIsContainer -and $_.LastWriteTime -lt (Get-Date).AddDays(-1) } |
Tee-Object -FilePath .\Log.txt |
Remove-Item -Force
をしかし、それはGet-ChildItem
からディレクトリ一覧を出力するので、それは少し醜いです:しかし、あなたはこれを行うことができます。あなただけのパスをキャプチャする代わりにこれを行うことができます:
Where-Object { -not $_.PSIsContainer -and $_.LastWriteTime -lt (Get-Date).AddDays(-1) } |
Select-Object -ExpandProperty FullName |
Tee-Object -FilePath .\Log.txt |
Remove-Item -Force
をまた、あなたが必要としないので、あなたはPowerShellのV3.0以降を使用している場合は、Get-ChildItem
コマンドレットは-File
と-Directory
パラメータをサポートしていることに注意してください-not $_.PsIsContainer
ものすべてを行う。
Remove-Itemコマンドレットに-Verboseパラメータを追加するだけで済みます。詳細なステートメントは、ファイルの完全なパスを含むようにファイルに対してファイルの削除操作が実行されていることを示します。 – tommymaynard
このコマンドを実行する前に、削除項目の最後に '-whatif'をすばやく追加することもできます。それは実際にファイルを削除せずに何をするかを表示します。それは私のベーコンを数回以上保存しました。 –