Server 2012 R2 - 如何删除“在系统中打开”的文件?

Luc*_*s B 5 deleting hyper-v-server-2012-r2

我正在使用 Server 2012 R2 Datacenter Core。它是我们的 Hyper-V 主机之一。我使用 Hyper-V 管理器从工作站管理它,并通过管理共享操作文件。

我创建了一个虚拟机,然后将 VHDX 复制到硬盘文件夹中。然后,我尝试使用该 VHDX 启动虚拟机,但是(因为它是旧映像并要求提供我没有的管理员密码),我决定从头开始构建。我关闭了虚拟机,移除了驱动器,并尝试删除 VHDX,以便我可以创建一个具有相同名称的新虚拟机。我收到“该操作无法完成,因为该文件已在系统中打开”。这种情况已经发生了几个小时。我最初怀疑我们的 AV 解决方案,但扫描 17GB 文件不可能花这么长时间(我认为)。

我以前在Win7系统上也遇到过这种情况,强制删除文件的方法有很多。但在这种情况下,我不能只是转到主机并离线启动它,或者安装 SuperKillerFileDeleterUltraGuaranteedBox。

那么我该如何摆脱它呢?

PS 我还意识到我可以将新的 VHDX 命名为其他名称 - 它不必VM 名称相同。但这太侮辱人了,而且无论如何我不能把一个未使用的 17GB 文件永远留在服务器上。

joe*_*rty 3

是的,我遇到过这个。Hyper-V 很可能正在保存该文件。您可能必须停止 Hyper-V 虚拟机管理服务才能删除 VHD。或者重新启动 Hyper-V 主机。或者,您可以检查是否存在与已删除的虚拟机对应的虚拟机工作进程。如果有,您可以杀死它,然后您就可以删除 VHD。

您可以在 Powershell 中运行此命令,查看是否有与虚拟机工作进程对应的进程 ID“GUID”(通过右键单击任务管理器中的虚拟机工作进程,选择“转到详细信息”,然后查看用户名来找到) “GUID”)。如果您找到已删除虚拟机的匹配进程,则终止该进程并删除 VHD。

Get-WmiObject -Namespace root\virtualization -class msvm_computersystem | select elementname, operationalstatus, processid, name| ft -auto
Run Code Online (Sandbox Code Playgroud)