当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 淘汰Windows.old

作者:精品下载站 日期:2024-12-14 07:40:10 浏览:11 分类:玩电脑

淘汰Windows.old


[玩转系统] 淘汰Windows.old

升级过程将留下一个名为 Windows.old 的文件夹,其中主要包含以前安装的文件。正如您所料,该文件可能会占用大量空间。不幸的是,您不能简单地删除该文件夹,因为许多文件和文件夹都具有特殊权限和所有者。如果您进行搜索,您会发现许多文章解释了删除此文件夹的正确方法是使用磁盘清理向导或 Cleanmgr.exe 命令行工具。但我的一些系统正在运行 Server Core,这意味着没有用于清理向导的 GUI,也没有命令行工具。最终我遇到了这个解决方案。

他的解决方案需要 Sysinternals 网站上的 junction.exe。他的解决方案也是 PowerShell 和 CMD 命令的混合。我决定这一切都可以使用 PowerShell 来完成,另外我可以利用 ShouldProcess,以便脚本支持 -WhatIf。


#requires -version 3.0

<#
Manually remove windows.old when CleanMgr.exe or
disk clean up wizard are not available.

Based on a solution from:
http://serverfault.com/questions/545579/properly-remove-windows-old-on-hyper-v-server-2012-r2

This requires Junction.exe from Sysinternals in your path.

  ****************************************************************
  * DO NOT USE IN A PRODUCTION ENVIRONMENT UNTIL YOU HAVE TESTED *
  * THOROUGHLY IN A LAB ENVIRONMENT. USE AT YOUR OWN RISK.  IF   *
  * YOU DO NOT UNDERSTAND WHAT THIS SCRIPT DOES OR HOW IT WORKS, *
  * DO NOT USE IT OUTSIDE OF A SECURE, TEST SETTING.             *
  ****************************************************************
#>

[cmdletbinding(SupportsShouldProcess)]
Param(
[string]$Path="C:\Windows.old")

#remove all junction points
Write-Verbose "Deleting junction points in $path"

junction.exe -s -q $Path | where {$_ -match "^"\"} | foreach {
  $jpath = $_ -Replace "(: JUNCTION)|(: SYMBOLIC LINK)",""
  if ($PSCmdlet.ShouldProcess($jpath)) {
    junction.exe -d $jpath
  }
}

If ($PSCmdlet.ShouldProcess($path)) {
  #take ownership
  Write-Verbose "Taking ownership of $path and subfolders"
  invoke-expression "takeown /F $path /R /D Y"
  #reset permissions
  Write-Verbose "Resetting permissions"
  invoke-expression "cacls $path /T /G Everyone:F"
  #remove the folder
  Write-Verbose "Removing $path and subfolders"
  Remove-Item -Recurse -Path $Path -Force
}

#end of script

您需要确保 junction.exe 位于您的路径中的某个位置。我把一个副本放在C:\Windows。我已经用过几次了,效果很好。您可能会收到继续提示,并且需要几分钟才能运行。但当其他选项不可用时,它可以完成工作。我希望您能让我知道它如何为您工作,但请在虚拟环境中进行测试,您可以在其中回滚和/或确保您拥有经过验证的备份。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯