我想創建一個PowerShell腳本,該腳本將查找鎖定在提供的目錄中的任何文件,並返回已鎖定該文件的應用程序/進程。檢查目錄中的鎖定文件並找到鎖定應用程序
我發現了一個腳本經過一個目錄,當它發現一個鎖定的文件將停止並報告該文件被鎖定。
Function Test-Lock{
param(
[parameter(ValueFromPipeline=$true)]
$Path
)
Process {
if($Path.Attributes -ne 'Directory'){
$oFile = New-Object System.IO.FileInfo $Path.FullName
$locked=$false
try{
$oStream = $oFile.Open([System.IO.FileMode]::Open, [System.IO.FileAccess]::ReadWrite, [System.IO.FileShare]::None)
$oStream.Close()
}
catch{
write-host $Error[0]
$locked=$true
New-Object PSObject -Property @{'Path'=$Path.FullName;'Locked?'=$locked} | Select Path,Locked?
}
}
}
}
$lockedfiles=(gci C:\temp | Test-Lock)
$lockedfiles | Format-Table -auto
這將返回:
Path Locked?
---- -------
C:\temp\ReportReq.doc True
我不能工作,如何找到具有該文件被鎖定的應用程序或proecess。
,你必須使用第三方工具,只看到一個應用程序使用哪些文件有點令人沮喪,但我會嘗試使用它。已嘗試使用Get-Handle.ps1文件,使用類似的命令來描述PS版本的句柄中提供的命令,我無法讓它在沒有錯誤的情況下工作:Where-Object:無法綁定參數'FilterScript'。無法將類型「System.String」的「類型」值轉換爲鍵入「S ystem.Management.Automation.ScriptBlock」。 – Lima
這裏的鏈接已經死了。 –
是否有引用的腳本的副本仍然可用? – r4d1um