Я не думаю, что это можно сделать с помощью фильтра, и, конечно, вы должны иметь в виду, что файлы могут быть заблокированы / разблокированы в любое время, так что это всегда будет просто снимок, который может измениться почти мгновенно.
Это может быть способ сделать это:
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?
$_
}
}