2012-03-30 129 views
3

我有一个poweshell命令,它从wwwroot目录中删除文件夹(即夏季),并在其中重新创建具有必要文件(图像,CSS,DLL等)的文件夹。这个问题每隔一段时间IIS就会锁定目录中的一些图像或文件,所以powershell命令无法删除文件。在运行由站点使用的powershell脚本之前,我会回收/停止应用程序池,但问题仍然存在。这个问题是随机的,即PowerShell脚本有时可以删除文件夹,而其他时间则无法删除。奇怪的是,如果我开始删除“夏季”内的内容(子文件夹,文件),最后我可以删除“夏季”文件夹,但这是一个手动过程,而且非常繁琐。无法删除文件,IIS锁

是否有任何命令,我可以放在PowerShell或批处理文件删除'夏'文件夹,即使当它被IIS锁定?

+1

开始他们你已经尝试了全-blown'iisreset/stop'? – 2012-03-30 01:10:03

+0

即时猜测这样做会停止整个IIS而不是只有一个应用程序池,不知道如果我可以做到这一点。 – sanjeev40084 2012-03-30 16:28:20

+0

任何最终的解决方案与完整的源代码示例工作? – Kiquenet 2014-01-08 07:10:23

回答

0

正如发表评论,完全停止IIS使用iisreset停止将工作。

此外,您可能只想停止您尝试从中删除文件的应用程序。看看Administration Guide

1

我同意@Lynn粉碎并推荐iisreset。

的Sysinternals有两个工具,提供了其他选项:

ProcExp工具,让你找到哪些进程打开的句柄到指定文件,并允许你关闭句柄。这个工具的缺点是它不是一个命令行工具。

MoveFile工具允许您计划重新启动后删除文件。

+0

关于它的任何其他工具usiong命令行(文件句柄)? – Kiquenet 2014-01-08 07:11:27

2

您可以使用IIS的PowerShell命令行开关来启动和停止的应用程序池,网站等

Import-Module WebAdministration; 
Stop-WebAppPool ${appPoolName} 
Stop-WebSite ${webSiteName} 

然后你可以再以后使用相反的命令

Start-WebAppPool ${appPoolName} 
Start-WebSite ${webSiteName} 
+0

使用tinyget.exe进行压力测试并执行Stop-WebAppPool,状态AppPool正在停止,未停止。任何解决方案呢? – Kiquenet 2014-01-08 07:10:05

+0

我会尝试使用'Stop-WebAppPool',我知道文件仍然被'Stop-Website'锁定,谢谢! – sonjz 2017-07-25 20:25:08