gpt4 book ai didi

file - Powershell 记录删除的文件

转载 作者:行者123 更新时间:2023-12-02 22:44:37 24 4
gpt4 key购买 nike

脚本搜索所有文件夹和子文件夹,当文件数>5 时删除最旧的文件。一切正常,但我还想将所有删除的文件记录为日志文件中的记录。

如何记录删除的文件?

这是脚本。

$path = "C:\test\1"
$keep = 3
$strLogFileName = "c:\test\yourlogfile.log";

$dirs = Get-ChildItem -Path $path -Recurse | Where-Object {$_.PsIsContainer}
foreach ($dir in $dirs) {
$files = Get-ChildItem -Path $dir.FullName | Where-Object {-not $_.PsIsContainer -and $_.name -like "*.zip"}
if ($files.Count -gt $keep) {
$files | Sort-Object CreationTime -desc| Select-Object -First ($files.Count - $keep) | Remove-Item -Force
***{write-host “Deleting File $File” -foregroundcolor “Red”; Remove-Item $File | out-null}***
}
}

最佳答案

首先,您需要在脚本中使用 log-message 类型的函数,将消息记录到 .log 文件中。然后检查文件是否存在,如果不存在则创建一个文件。

然后就在您使用 Remove-Item 命令删除文件之前,您可以使用 Log-Message 函数将消息记录到日志文件中。

% { (Log-Message "Deleting File $_"); $_ }

完整的脚本

$path = "C:\test\1"
$keep = 3
$strLogFileName = "c:\test\yourlogfile.log";

function Log-Message
{
Param ([string]$logtext)
Add-content $strLogFileName -value $logtext
}

$dirs = Get-ChildItem -Path $path -Recurse | Where-Object {$_.PsIsContainer}
foreach ($dir in $dirs) {
$files = Get-ChildItem -Path $dir.FullName | Where-Object {-not $_.PsIsContainer -and $_.name -like "*.zip"}
if ($files.Count -gt $keep) {
$files | Sort-Object CreationTime -desc| Select-Object -First ($files.Count - $keep) |
% { $dt=get-date;(Log-Message "Deleting File $_ on $dt");$_ }| Remove-Item -Force

}
}

关于file - Powershell 记录删除的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18517132/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com