Powershell 如何使用Get ChildItem筛选出被其他进程文件锁定/正在使用的文件?

Powershell 如何使用Get ChildItem筛选出被其他进程文件锁定/正在使用的文件?,powershell,get-childitem,locked-files,Powershell,Get Childitem,Locked Files,Get ChildItem是否能够筛选出处于锁定状态的文件?例如,应用程序当前正在使用的日志文件和Get ChildItem应在结果中跳过这些文件 例如: Get-ChildItem -Path C:\Logs\* # Maybe do pipelines condition here for filtering out locked files 我认为这不能用过滤器来完成,当然你应该记住,文件可以随时被锁定/解锁,所以这永远只是快照,几乎可以立即更改。 这可能是一种方法: Get-Child

Get ChildItem
是否能够筛选出处于锁定状态的文件?例如,应用程序当前正在使用的日志文件和
Get ChildItem
应在结果中跳过这些文件

例如:

Get-ChildItem -Path C:\Logs\* # Maybe do pipelines condition here for filtering out locked files

我认为这不能用过滤器来完成,当然你应该记住,文件可以随时被锁定/解锁,所以这永远只是快照,几乎可以立即更改。
这可能是一种方法:

Get-ChildItem -Path D:\Logs -File | ForEach-Object {
    try {
        $stream = $_.Open([System.IO.FileMode]::Open, [System.IO.FileAccess]::ReadWrite, [System.IO.FileShare]::None)
        if ($stream) { $stream.Close() }
        Write-Host "File $($_.FullName) is currently not locked" -ForegroundColor Green
    } 
    catch {
        Write-Host "File $($_.FullName) is currently locked" -ForegroundColor Red
        # emit the locked fileInfo object?
        $_
    }
}

Get ChildItem
看不到文件是否被另一个进程打开或锁定,因此答案是“否”。