最初にcleanmgr.exe(ディスククリーンアップツール)をコピーして実行しようとしましたが、Core / Hyper-V Serverに存在しない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に戻り、アクセス許可をクリアし、すべてのファイルを削除する3つのコマンドを実行しました。
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はなくなって、システムはすべての古いjunctionターゲットをそのままにして正常に実行されています。