【问题标题】:Can't delete files, IIS lock无法删除文件,IIS 锁定
【发布时间】:2012-03-30 01:05:23
【问题描述】:

我有一个 poweshell 命令,它从 wwwroot 目录中删除文件夹(即 Summer),并在其中重新创建包含必要文件(图像、css、dll 等)的文件夹。问题是 IIS 每隔一段时间就会锁定目录中的一些图像或文件,因此 powershell 命令无法删除该文件。在运行站点使用的powershell脚本之前,我确实回收/停止了apppool,但问题仍然存在。这个问题是随机的,即 powershell 脚本有时可以删除文件夹,而其他时候不能。奇怪的是,如果我开始删除“Summer”中的内容(子文件夹、文件),最后,我可以删除“Summer”文件夹,但这是一个手动过程,很乏味。

是否有任何命令可以放入 powershell 或批处理文件来删除“Summer”文件夹,即使它被 IIS 锁定?

【问题讨论】:

  • 你试过一个成熟的 'iisreset /stop' 吗?
  • 我猜这样做会停止整个 IIS 而不仅仅是一个应用程序池,不确定我是否可以这样做。
  • 任何带有完整源代码示例的最终解决方案?

标签: iis powershell locking sites


【解决方案1】:

我同意@Lynn Crumbling 并推荐 iisreset。

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

ProcExp 工具允许您查找哪些进程对给定文件具有打开的句柄,并允许您关闭该句柄。这个工具的缺点是它不是一个命令行工具。

MoveFile 工具允许您安排在重新启动后删除文件。

【讨论】:

  • 任何其他使用命令行的工具(文件句柄)?
【解决方案2】:

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

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

之后您可以使用相反的命令再次启动它们

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

【讨论】:

  • 使用 tinyget.exe 进行压力网络并执行 Stop-WebAppPool,状态 AppPool 正在停止,而不是停止。有什么解决办法吗?
  • 我会尝试使用Stop-WebAppPool,我知道文件仍然会被Stop-Website 锁定,谢谢!
【解决方案3】:

正如评论所言,使用 iisreset stop 完全停止 IIS 是可行的。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-09
    • 1970-01-01
    相关资源
    最近更新 更多