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

如何将PowerShell磁盘空间检查脚本的执行错误写入日志?

解决PowerShell磁盘检查脚本的错误日志写入问题

你的PowerShell脚本在检查多台设备磁盘空间时,Get-WmiObject抛出的RPC不可用等错误只会显示在控制台,没有写入日志文件。要解决这个问题,需要将错误流的内容也捕获并写入日志,以下是两种可行的修改方案:

方案一:直接重定向错误流到输出流

在Get-WmiObject命令后添加2>&1,将错误流合并到标准输出流,这样错误信息会被一起存入变量,最终写入日志文件:

$equipos = "D:\SCRIPTSM\AAAA\equipos.txt"
$listaEquipos = Get-Content $equipos
$fecha = (Get-Date).ToString('dd.MM.yyyy')
$espaciotxt = foreach ($equipo in $listaEquipos){
    # 添加2>&1将错误流重定向到输出流
    Get-WmiObject -Class Win32_LogicalDisk -ComputerName $equipo -Filter "drivetype=3" -ErrorAction SilentlyContinue 2>&1 | 
        Sort-Object -Property DeviceID -ErrorAction SilentlyContinue | 
        Format-Table -Property DeviceID,
        @{name='EspacioLIBRE(MB)';expression={$_.Freespace / 1MB -as [int]}},
        @{name='TamañoDISCO(GB)';expression={$_.Size / 1GB -as [int]}},
        @{name='%Libre';expression={$_.FreeSpace / $_.Size * 100 -as [int]}} -ErrorAction SilentlyContinue
    Write-Output "Ip del equipo : $equipo fecha del test: $fecha"
}
$espaciotxt | Out-File C:\Users\AAAAA\Desktop\PRU.txt -Append

方案二:使用Try/Catch捕获并格式化错误信息

如果希望错误信息更清晰易读,可以用try/catch块捕获异常,将错误信息格式化后添加到输出内容中:

$equipos = "D:\SCRIPTSM\AAAA\equipos.txt"
$listaEquipos = Get-Content $equipos
$fecha = (Get-Date).ToString('dd.MM.yyyy')
$espaciotxt = foreach ($equipo in $listaEquipos){
    try {
        Get-WmiObject -Class Win32_LogicalDisk -ComputerName $equipo -Filter "drivetype=3" -ErrorAction Stop | 
            Sort-Object -Property DeviceID | 
            Format-Table -Property DeviceID,
            @{name='EspacioLIBRE(MB)';expression={$_.Freespace / 1MB -as [int]}},
            @{name='TamañoDISCO(GB)';expression={$_.Size / 1GB -as [int]}},
            @{name='%Libre';expression={$_.FreeSpace / $_.Size * 100 -as [int]}}
    }
    catch {
        Write-Output "ERROR al conectar con $equipo : $($_.Exception.Message)"
    }
    Write-Output "Ip del equipo : $equipo fecha del test: $fecha"
    Write-Output "-----------------------------------------" # 添加分隔线,区分不同设备的结果
}
$espaciotxt | Out-File C:\Users\AAAAA\Desktop\PRU.txt -Append

关键说明:

  • -ErrorAction Stop:让Get-WmiObject遇到错误时抛出终止异常,确保catch块能捕获到错误。
  • 2>&1:PowerShell中,2代表错误流,1代表标准输出流,2>&1表示将错误流的内容重定向到标准输出流。
  • -Append:如果希望每次执行脚本时保留之前的日志,添加这个参数避免覆盖原有内容。

内容的提问来源于stack exchange,提问作者AALV8

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 05:44:55