如何通过PowerShell在远程服务器上执行驱动器清理命令
远程服务器执行C盘DISM空间清理的实现方法
前置准备
- 远程服务器开启PowerShell远程管理功能:在远程服务器本地执行
Enable-PSRemoting -Force即可开启(Windows Server系统默认开启该功能) - 执行操作的账号需拥有远程服务器的本地管理员权限
- 本地与远程服务器之间的防火墙放行WinRM端口:默认5985(HTTP)、5986(HTTPS)
- 工作组环境下,本地需将远程服务器加入WinRM信任列表,执行命令:
Set-Item WSMan:\localhost\Client\TrustedHosts -Value "远程服务器IP/主机名" -Force
单台服务器远程执行(推荐写法)
远程会话属于无交互后台会话,不需要设置窗口样式、Shell启动这类GUI相关参数,直接调用DISM即可,稳定性更高:
# 替换为实际的远程服务器地址 $remoteHost = "远程服务器IP或主机名" # 弹出凭据窗口,输入远程服务器的管理员账号密码 $cred = Get-Credential Invoke-Command -ComputerName $remoteHost -Credential $cred -ScriptBlock { $dismExe = Join-Path $env:SystemRoot "system32\dism.exe" # 执行组件清理,等待执行完成后返回结果 & $dismExe /Online /NoRestart /Cleanup-Image /StartComponentCleanup }
兼容原有Process启动逻辑的写法
如果需要沿用你本地测试通过的进程启动逻辑,需要调整两个不兼容远程会话的参数:关闭UseShellExecute、移除无效的窗口样式配置(远程会话无绑定GUI桌面,设置窗口样式会触发报错):
$remoteHost = "远程服务器IP或主机名" $cred = Get-Credential Invoke-Command -ComputerName $remoteHost -Credential $cred -ScriptBlock { $ProcessInfo = New-Object -TypeName System.Diagnostics.ProcessStartInfo $ProcessInfo.FileName = Join-Path $env:SystemRoot "system32\dism.exe" $ProcessInfo.Arguments = "/Online /NoRestart /Cleanup-Image /StartComponentCleanup" # 远程无交互桌面,必须关闭Shell启动模式 $ProcessInfo.UseShellExecute = $false $Process = New-Object System.Diagnostics.Process $Process.StartInfo = $ProcessInfo $Process.Start() | Out-Null # 等待清理进程执行结束,避免会话提前断开导致任务中断 $Process.WaitForExit() }
批量执行多台服务器
如果需要同时对多台服务器执行清理,直接传入服务器地址列表即可,建议加后台任务参数避免阻塞控制台:
# 替换为实际的服务器列表 $hostList = @("192.168.1.10", "192.168.1.11", "file-server01", "ad-server02") $cred = Get-Credential # 后台批量执行,返回任务ID Invoke-Command -ComputerName $hostList -Credential $cred -ScriptBlock { $dismExe = Join-Path $env:SystemRoot "system32\dism.exe" & $dismExe /Online /NoRestart /Cleanup-Image /StartComponentCleanup } -AsJob
执行后可以通过
Get-Job查看任务运行状态,通过Receive-Job -JobId <任务ID>获取对应服务器的清理执行结果。
注意事项
- DISM组件清理耗时较长(通常10-30分钟不等,取决于服务器组件存储大小),执行过程中不要强制断开PowerShell会话
- 建议先在非业务测试服务器验证命令执行效果,确认无异常后再在生产环境运行
- 如果远程执行提示权限不足,确认传入的凭据属于远程服务器本地Administrators组即可
内容的提问来源于stack exchange,提问作者Empty Coder
相关产品推荐
相关产品推荐

