是否Get-ChildItem
能够过滤掉处于锁定状态的文件?例如应用程序当前正在使用的日志文件,Get-ChildItem
应在结果中跳过这些文件。
例子:
Get-ChildItem -Path C:\Logs\* # Maybe do pipelines condition here for filtering out locked files
是否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?
$_
}
}