用户 PowerShell 删除文件夹的内容,但忽略当前正在使用的文件

User PowerShell to Delete Contents of Folder, but Ignore Files Currently in Use

长话短说,我有一个客户想弄清楚为什么日志会填满他们的服务器。这不是我真正需要担心的事情,除了我需要不断检查并清除大量服务器的日志以便我的应用程序可以 运行。我正在尝试找出一个可以清除日志文件夹的脚本。理想情况下,这应该有效:

Get-ChildItem -Path $filePath -Include *.* -Recurse | foreach { $_.Delete()}

但有些文件仍在使用中,所以我得到这个:

Exception calling "Delete" with "0" argument(s): "The process cannot access the file 
'filename' because it is being used by another process."
At line:1 char:87
+ ... $filePath -Include *.* -Recurse | foreach { $_.Delete()}
+                                                           
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : IOException

我可以添加一些东西来忽略仍在使用的文件吗?

如果您不想记录删除了哪些文件以及正在使用哪些文件,您可以简单地将 Get-ChildItem 传送到 Remove-Item 并使用 -ErrorAction SilentlyContinue (-EA 0 简称)以抑制错误消息。

请注意 -File 的使用比 -Include *.* 更容易、更有效。 您还可以为 Remove-Item 添加 -Force:

Forces the cmdlet to remove items that cannot otherwise be changed, such as hidden or read-only files or read-only aliases or variables.

Get-ChildItem -Path $filepath -File -Recurse -EA 0 | Remove-Item -Confirm:$false -EA 0