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 .

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 
  • Windows Web Serview 2008 R2 Serview Core complexidade da senha local
  • Uso da memory Core Extreme do Windows 2012 no service SVCHOST / estação de trabalho
  • Quais são os requisitos mínimos de RAM paira Serview Core 2008 R2?
  • Windows 2008 R2 Serview Core Disk Space Requirements / Recomendações
  • Atualização do Windows no Serview Core 2012
  • SQL no server Core airmadilhas
  • Como concedo a permissão "log-in como service" a um (local) da linha de command?
  • Force Instale o Servidor Hyper-V do Driview "Errado"