J'ai installé Hyper-V Server 2012 R2 sur un serveur qui avait Hyper-V Server 2012. Lorsque j'ai fait cela, le Windows.old
dossier standard a été créé. Je voudrais maintenant supprimer ce dossier en toute sécurité. La façon standard de le faire avec une interface graphique complète serait d'utiliser le nettoyage de disque, mais bien sûr, je n'ai pas cette option sur Hyper-V Server.
Existe-t-il un moyen formel de supprimer ce dossier dans ce scénario? Je sais que si c'était Server Core, je pourrais installer l'interface graphique complète, y compris Desktop Experience, mais ce serait beaucoup de bêtises juste pour supprimer proprement un dossier.
Ma principale raison de demander, par opposition à simplement faire rmdir /s
ou quelque Windows.old
chose du genre, est que le dossier a beaucoup de jonctions, et je ne veux rien casser dans la copie du système d'exploitation de production dans le cadre de cela.
la source
Réponses:
J'ai d'abord essayé de copier et d'exécuter cleanmgr.exe (outil de nettoyage de disque), mais il a trop de dépendances sur les DLL qui ne sont pas présentes dans Core / Hyper-V Server.
Au lieu de cela, j'ai supprimé le répertoire manuellement.
J'ai d'abord supprimé tous les points de jonction et les liens symboliques. Pour ce faire, j'ai utilisé junction.exe de SysInternals. Copiez l'exe dans un répertoire de votre chemin. Je l'ai exécuté pour obtenir une liste de toutes les jonctions:
J'ai ouvert un PowerShell:
et exécuté le script suivant pour rechercher les lignes pertinentes et réexécuter junction.exe:
Cela a supprimé tous les points de jonction et le lien symbolique unique sur mon système.
de retour dans cmd.exe, j'ai maintenant exécuté trois commandes pour effacer les autorisations et supprimer tous les fichiers:
Dans mon test, j'ai installé un nouveau serveur Hyper-V 2012, puis mis à niveau vers 2012 R2, Windows.old a maintenant disparu et le système fonctionne correctement avec toutes les anciennes cibles de jonction intactes.
la source
takeown
existe, ce que je suis un peu gêné d'admettre que je ne connaissais pas.J'ai utilisé la réponse de Peter H et confirmé que cela fonctionne, mais je devais le faire sur plusieurs serveurs, j'ai donc modifié son code en un script PowerShell qui peut être exécuté localement ou via PS à distance à partir d'une autre machine. Voici le fichier .ps1:
la source