Powershell: Check if a file is locked Powershell: Check if a file is locked powershell powershell

Powershell: Check if a file is locked


With thanks to David Brabant who posted a link to this solution under the initial question. It appears I can do this by starting off with the following function:

function Test-FileLock {  param (    [parameter(Mandatory=$true)][string]$Path  )  $oFile = New-Object System.IO.FileInfo $Path  if ((Test-Path -Path $Path) -eq $false) {    return $false  }  try {    $oStream = $oFile.Open([System.IO.FileMode]::Open, [System.IO.FileAccess]::ReadWrite, [System.IO.FileShare]::None)    if ($oStream) {      $oStream.Close()    }    return $false  } catch {    # file is locked by a process.    return $true  }}

Then add a 'wait until' function with a timeout.

Thanks for your help!


I use this:

try { [IO.File]::OpenWrite($file).close();$true }catch {$false}


$fileName = "C:\000\Doc1.docx"$file = New-Object -TypeName System.IO.FileInfo -ArgumentList $fileName$ErrorActionPreference = "SilentlyContinue"[System.IO.FileStream] $fs = $file.OpenWrite(); if (!$?) {    $msg = "Can't open for write!"}else {    $fs.Dispose()    $msg = "Accessible for write!"}$msg