AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 545579
Accepted
MikeBaz - MSFT
MikeBaz - MSFT
Asked: 2013-10-13 05:17:36 +0800 CST2013-10-13 05:17:36 +0800 CST 2013-10-13 05:17:36 +0800 CST

正确删除 Hyper-V Server 2012 R2 上的 windows.old

  • 772

我已经在具有 Hyper-V Server 2012 的服务器上安装了 Hyper-V Server 2012 R2。当我这样做时,标准Windows.old文件夹被创建。我现在想安全地删除该文件夹。使用完整 GUI 执行此操作的标准方法是使用磁盘清理,但我当然在 Hyper-V 服务器上没有该选项。

在这种情况下,是否有正式的方法可以删除该文件夹?我知道如果这是服务器核心,我可以安装完整的 GUI,包括桌面体验,但是仅仅为了干净地删除一个文件夹就很废话了。

我询问的主要原因,而不是仅仅做rmdir /s或类似的事情,是该Windows.old文件夹有很多连接点,我不想破坏生产操作系统副本中的任何内容作为这样做的一部分。

hyper-v-server-2012
  • 2 2 个回答
  • 39230 Views

2 个回答

  • Voted
  1. Best Answer
    Peter Hahndorf
    2013-10-13T14:26:13+08:002013-10-13T14:26:13+08:00

    我首先尝试复制并运行 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 现在消失了,系统运行良好,所有旧的连接目标都完好无损。

    • 24
  2. LikeARock47
    2014-01-27T00:59:22+08:002014-01-27T00:59:22+08:00

    我使用了 Peter H 的答案并确认它确实有效,但是我需要在多台服务器上执行此操作,因此我将他的代码修改为一个 powershell 脚本,该脚本可以在本地执行,也可以通过 PS 从另一台机器远程执行。这是 .ps1 文件:

    # Script to remove windows.old after an upgrade
    
    # Assumes path to sysinternals is in the PATH env variable
    
    
    $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 /F C:\windows.old /R /D Y
     echo y | cacls C:\windows.old /T /G Everyone:F
    
     rm C:\windows.old -recurse -force
     rm "$env:temp\juncts.txt" -force
    
    • 6

相关问题

  • 带有 Zambezi AMD FX 系列的 Hyper-V Server 2012 - 不存在硬件辅助虚拟化

  • Hyper-V 管理器无法识别 USB 拇指驱动器

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve