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

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

我创build了一个VM,然后将VHDX复制到Hard Disks文件夹中。 然后我试图用这个VHDX启动虚拟机,但是(因为它是一个旧的映像,并要求我没​​有pipe理员密码),我决定从头开始构build。 我closures了虚拟机,删除了驱动器,并尝试删除VHDX,以便可以创build一个具有相同名称的新驱动器。 我得到“该操作无法完成,因为该文件在系统中打开”。 这已经发生了好几个小时了。 我最初怀疑我们的AV解决scheme,但它不能花费这么长的时间来扫描一个17GB的文件(我认为)。

现在,我已经在Win7系统上发生过这种情况,并且有很多强制删除文件的方法。 在这种情况下,我不能只是去主机并离线启动,或者安装SuperKillerFileDeleterUltraGuaranteedBox。

那我该如何摆脱呢?

PS我也意识到我只能命名新的VHDX其他东西 – 它不必与VM名称相同。 但这只是侮辱,无论如何,我不能只将一个未使用的17GB文件永远留在服务器上。

是的,我遇到了这个。 Hyper-V很有可能保存文件。 您可能必须停止Hyper-V虚拟机pipe理服务才能删除VHD。 要么或重新启动Hyper-V主机。 或者,您可以检查是否存在与删除的虚拟机相对应的虚拟机工作进程。 如果有,你可以杀死那个应该允许你删除VHD的东西。

您可以在Powershell中运行这个命令来查看是否有与虚拟机工作进程对应的进程ID“GUID”(通过右键单击任务pipe理器中的虚拟机工作进程,select“转到详细信息”并查看用户名“GUID”)。 如果您发现已删除虚拟机的匹配进程,请杀死该进程并删除VHD。

Get-WmiObject -Namespace root\virtualization -class msvm_computersystem | select elementname, operationalstatus, processid, name| ft -auto 

那么,这是我的第一个postfault超级尴尬…显然,这是我的系统有一个文件的句柄。 我重新启动我的本地机器,瞧能够删除文件。 我不敢相信我没有先尝试。

在别处find了这个(不是我自己的工作,来自techienateafs的关于spiceworks的评论),它对我很有帮助 。 我安装后,间歇性地打这个,然后卸载一个虚拟磁盘(通过PowerShell的Mount-WindowsImage和Dismount-WindowsImage)由于卸载失败。

“我可以通过在主机服务器上打开diskmgmt.msc来解决这个问题,磁盘在那里列出,右键单击并selectdetach,它会提示确认你有正确的文件,此时进程资源pipe理器确认文件不再由pid 4(nt kernel&system)打开,我可以使用.vhdx文件自由运行。“