Hyper-v-Server-2012

正確刪除 Hyper-V Server 2012 R2 上的 windows.old

  • March 23, 2020

我已經在具有 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 現在消失了,系統執行良好,所有舊的連接目標都完好無損。

引用自:https://serverfault.com/questions/545579