2010-08-26 29 views

回答

4

您永遠無法知道文件當前是否僅用於最近正在使用的文件。原因是腳本返回文件的時刻可能會被以前使用它的任何程序關閉。像這樣寫腳本只會導致片狀行爲。

一個好得多的方法是,只要文件沒有被使用並且捕獲由於使用衝突導致的異常就執行腳本將要執行的任何操作。最終的結果將是一個更簡單,更可靠的計劃。

+3

是的,但有時您想知道哪個進程已打開該文件,以便您可以在錯誤處理中報告該進程。這可以使調試爲什麼某些腳本在半夜失敗更容易一些。 – 2010-08-26 17:34:48

4

沒有一個內置的命令,我所知道的但有你可以使用這個幾個工具:

net file 

SysInternals Technet上(psfilehandle):

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

handle.exe | select-string ': File' 
1

我發現,使用Sysinternals的 「ListDlls.exe」 是很容易和方便:

c:\SysInternals\Listdlls.exe -d AssemblyInUse.dll 

ListDLLs v3.1 - List loaded DLLs 
Copyright (C) 1997-2011 Mark Russinovich 
Sysinternals - www.sysinternals.com 

---------------------------------------------------------------------------- 
powershell.exe pid: 7296 
Command line: "C:\WINDOWS\system32\WindowsPowerShell\v1.0\powershell.exe" 

我希望幫助!

+0

是不是隻適用於DLL?我的問題是關於任意文件。 – derekerdmann 2013-08-08 21:12:18

+0

你是對的Derek,它處理的是當我想知道我是否可以導入PowerShell模塊的時候有用的dll文件。如果你想檢查任何文件,我相信你可以在你自己的函數中使用PowerShell中的這個C#邏輯: http://stackoverflow.com/questions/876473/is-there-a-way-to-check如果您想進一步訪問鎖定的文件,您可以嘗試解鎖它: http://msdn.microsoft.com/en-us /library/system.io.filestream.aspx – 2013-08-30 15:37:54

相關問題