views:

45

answers:

2

Is there a Powershell command to check if a file is in use by another user? If not, what would it take to write a script that can?

+2  A: 

There isn't a built-in command that I'm aware of however there are several tools you can use for this:

net file

From SysInternals on Technet (psfile and handle):

psfile.exe # lists and allows you to close remotely opened files

handle.exe | select-string ': File'
Keith Hill
+2  A: 

You can never tell if a file is currently being used only that it was recently being used. The reason why is that the moment the script returns the file could be closed by whatever program was previously using it. Writing scripts like this will only lead to flaky behavior.

A much better approach is to just do whatever the script was going to do if the file wasn't in use and catch the exceptions that result from a use conflict. The end result will be a much simpler and more reliable program.

JaredPar
Yes but sometimes you want to know which process has the file open so you can report that in your error handling. This can make it a bit easier to debug why some script failed in the middle of the night.
Keith Hill