web-dev-qa-db-ja.com

Server 2012 R2-「システムで開いている」ファイルを削除する方法

Server 2012 R2 Datacenter Coreを使用しています。これは、Hyper-Vホストの1つです。私はワークステーションからHyper-Vマネージャーを使用して管理し、管理共有を介してファイルを操作します。

VMを作成し、VHDXをハードディスクフォルダーにコピーしました。次に、そのVHDXでVMを起動しようとしましたが、(それは古いイメージであり、持っていない管理者パスワードを要求されたため)、最初からビルドすることにしました。同じ名前で新しいVMを作成できるように、VMをシャットダウンし、ドライブを取り外し、VHDXを削除しようとしました。「システムでファイルが開いているため、アクションを完了できません」というメッセージが表示されます。これは発生しています最初はAVソリューションだと思っていましたが、17 GBのファイルをスキャンするのにこれほど長くはかかりません(私はそう思います)。

今、私は以前にこれをWin7システムで起こしました、そしてファイルを強制的に削除させる方法はたくさんあります。ただし、この場合は、ホストにアクセスしてオフラインで起動したり、SuperKillerFileDeleterUltraGuaranteedBoxをインストールしたりすることはできません。

どうすればそれを取り除くことができますか?

追伸また、新しいVHDXに別の名前を付けることもできます-haveはVM nameと同じではありません。しかし、それは単に侮辱的であり、とにかく未使用の17GBファイルをサーバーに永久に残すことはできません。

4
Lucas B

ええ、私はこれに遭遇しました。 Hyper-Vがファイルを保持している可能性が非常に高いです。 VHDを削除するには、おそらくHyper-V仮想マシン管理サービスを停止する必要があります。それか、Hyper-Vホストを再起動します。または、削除されたVMに対応する仮想マシンワーカープロセスがあるかどうかを確認することもできます。存在する場合は、VHDを削除できるように強制終了できます。

これをPowershellで実行して、仮想マシンワーカープロセスに対応するプロセスID「GUID」があるかどうかを確認できます(タスクマネージャーで仮想マシンワーカープロセスを右クリックし、[詳細に移動]を選択して、ユーザー名を確認します。 「GUID」)。削除されたVMに一致するプロセスが見つかった場合は、そのプロセスを強制終了してVHDを削除します。

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

これは別の場所で見つかりました(私自身の作品ではなく、techienateafsからのコメント spiceworks )。それは私にとってはうまくいきました。マウントが失敗したため、仮想ディスクをマウントしてからマウント解除した後(Powershell Mount-WindowsImageおよびDismount-WindowsImageを介して)断続的にヒットしました。

「ホストサーバーでdiskmgmt.mscを開くことで問題を解決できました。そこにディスクが表示され、右クリックして[デタッチ]を選択します。正しいファイルがあることを確認するプロンプトが表示されます。その時点で、プロセスエクスプローラーは、ファイルはpid 4(ntカーネル&システム)で開かれなくなり、.vhdxファイルで自由に作業できます。」

1
aggieNick02

さて、これはserverfaultへの私の最初の投稿にとって非常に恥ずかしいです...どうやら、それはmyファイルのハンドルを持つシステムでした。ローカルマシンを再起動したところ、ファイルを削除できました。私が最初にそれを試さなかったなんて信じられません。

1
Lucas B