You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.31 17:06:29