Hyper-v-Server-2012
正確刪除 Hyper-V Server 2012 R2 上的 windows.old
我已經在具有 Hyper-V Server 2012 的伺服器上安裝了 Hyper-V Server 2012 R2。當我這樣做時,標准
Windows.old
文件夾被創建。我現在想安全地刪除該文件夾。使用完整 GUI 執行此操作的標準方法是使用磁碟清理,但我當然在 Hyper-V 伺服器上沒有該選項。在這種情況下,是否有正式的方法可以刪除該文件夾?我知道如果這是伺服器核心,我可以安裝完整的 GUI,包括桌面體驗,但是僅僅為了乾淨地刪除一個文件夾就很廢話了。
我詢問的主要原因,而不是僅僅做
rmdir /s
或類似的事情,是該Windows.old
文件夾有很多連接點,我不想破壞生產作業系統副本中的任何內容作為這樣做的一部分。
我首先嘗試複製並執行 cleanmgr.exe(磁碟清理工具),但它對 Core/Hyper-V 伺服器中不存在的 DLL 有太多依賴。
所以我手動刪除了目錄。
首先,我刪除了所有連接點和符號連結。為此,我使用了 SysInternals 的junction.exe。將 exe 複製到路徑中的目錄中。我執行它以獲取所有路口的列表:
c:\tools\junction.exe -s -q C:\windows.old > %temp%\junc.txt
我打開了一個 PowerShell:
start powershell.exe
並執行以下腳本以找到相關行並再次執行 junction.exe:
foreach ($line in [System.IO.File]::ReadLines("$env:temp\junc.txt")) { if ($line -match "^\\\\") { $file = $line -replace "(: JUNCTION)|(: SYMBOLIC LINK)","" & c:\tools\junction.exe -d "$file" } }
這刪除了我係統上的所有連接點和單個符號連結。
回到 cmd.exe 我現在執行了三個命令來清除權限並刪除所有文件:
takeown /F C:\windows.old /R /D Y cacls C:\windows.old /T /G Everyone:F rd /s /q C:\windows.old
在我的測試中,我安裝了一個新的 Hyper-V 伺服器 2012,然後升級到 2012 R2,Windows.old 現在消失了,系統執行良好,所有舊的連接目標都完好無損。