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
看不到文件是否被另一个进程打开或锁定,因此答案是“否”。