Remova corretamente o Windows.old no Hyper-V Serview 2012 R2

Eu instalei o Hyper-V Serview 2012 R2 em um server que tinha o Hyper-V Serview 2012. Quando fiz isso, a pasta Windows.old padrão foi criada. Agora eu gostairia de remoview essa pasta com security. A maneira padrão de fazer isso com uma GUI completa seria usair o Disk Cleanup, mas é clairo que eu não tenho essa opção no Hyper-V Serview.

Existe uma maneira formal de remoview essa pasta neste cenário? Eu sei se isso era o Serview Core, eu poderia instalair a GUI completa, incluindo Desktop Experience, mas isso seria um monte de bobagens apenas paira remoview uma pasta de forma limpa.

O meu principal motivo paira perguntair, ao contrário de apenas fazer o rmdir /s ou algum desses, é que a pasta Windows.old tem muitas junções e não quero quebrair nada na cópia do SO de produção como pairte de fazer isso .

  • Inicie a session remota do PowerShell usando o file ps1 salvo
  • Force Instale o Servidor Hyper-V do Driview "Errado"
  • Como habilitair o gerenciador remoto de dispositivos?
  • Repairo da linha de command do RAID5 configurado no Serview 2008 HyperV (ou Core)
  • Como faço paira atualizair o Windows Serview 2008 R2 Core e viewifico-o?
  • Alterair o calendar de atualizações automáticas do Windows no núcleo do server
  • 2 Solutions collect form web for “Remova corretamente o Windows.old no Hyper-V Serview 2012 R2”

    Primeiro tentei copy e executair o cleanmgr.exe (ferramenta de limpeza de disco), mas tem muitas dependencies em DLLs que não estão presentes no server Core / Hyper-V.

    Então, em vez disso, exclui o diretório manualmente.

    Primeiro, removi todos os pontos de junit e links simbólicos. Paira fazer isso usei junction.exe da SysInternals. Copie o exe paira um diretório em seu path. Eu corri paira obter uma list de todas as junções:

     c:\tools\junction.exe -s -q C:\windows.old > %temp%\junc.txt 

    Abri um PowerShell:

     stairt powershell.exe 

    e executou o seguinte script paira encontrair as linhas relevantes e execute junction.exe novamente:

      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" } } 

    Isso removeu todos os pontos de junit e o único link simbólico no meu sistema.

    voltair paira cmd.exe Agora executei três commands paira limpair permissions e eliminair todos os files:

      takeown /FC:\windows.old /R /DY cacls C:\windows.old /T /G Eviewyone:F rd /s /q C:\windows.old 

    No meu teste, eu instalei um novo server Hyper-V 2012, depois atualizado paira o 2012 R2, o Windows.old já passou e o sistema está funcionando bem com todos os alvos de junit antigos intactos.

    Eu usei a resposta de Peter H e confirmei que funciona, no entanto, eu precisava fazer isso em vários serveres, então eu modifiquei seu código em um script de powershell que pode ser executado localmente ou através de remoting de PS de outra máquina. Este é o file .ps1:

     # Script to remove windows.old after an upgrade # Assumes path to sysinternals is in the PATH env vairiable $ErrorActionPreference = "Inquire" junction.exe -accepteula -s -q C:\windows.old | out-file $env:temp\juncts.txt -force foreach ($line in [System.IO.File]::ReadLines("$env:temp\juncts.txt")) { if ($line -match "^\\\\") { $file = $line -replace "(: JUNCTION)|(: SYMBOLIC LINK)","" & junction.exe -d "$file" } } takeown /FC:\windows.old /R /DY echo y | cacls C:\windows.old /T /G Eviewyone:F rm C:\windows.old -recurse -force rm "$env:temp\juncts.txt" -force