如何获取日志上提示的退出错误

问题描述 投票:0回答:1

得到这个脚本来检查磁盘空间并将其传输到日志中,我想将提示中弹出的错误放入日志中

$equipos = "D:\SCRIPTSM\AAAA\equipos.txt"
$listaEquipos = Get-Content $equipos
$fecha = (Get-Date).ToString('dd.MM.yyyy')
$espaciotxt = foreach ($equipo in $listaEquipos){
    Get-WmiObject -Class Win32_LogicalDisk -ComputerName $equipo -Filter "drivetype=3" | 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]}}
    Write-Output "Ip del equipo : $equipo fecha del test: $fecha"
    }
$espaciotxt | Out-File C:\Users\AAAAA\Desktop\PRU.txt

这是退出日志,我想在其中放置错误提示。

错误提示:Get-WmiObject : RPC 服务器不可用...

log img disk

powershell system-administration
1个回答
2
投票

我添加了一个 Try-Catch 循环,并在 Get-WMIObject 命令上将错误首选项设置为“停止”。

不确定您是否想要“错误提示:”或您自己的自定义字符串,因此我将两者都添加到了 catch 语句中。

$Error[0] 是 Powershell 会话中的最后一个错误,它将触发 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]}}
        Write-Output "Ip del equipo : $equipo fecha del test: $fecha"
    }
    catch{
        "Error prompt: "+[string]$Error[0].Exception.Message
        $Error[0].Exception.Message
        Write-Output "Ip del equipo : $equipo fecha del test: $fecha"
    }
}
$espaciotxt | Out-File C:\Users\AAAAA\Desktop\PRU.txt
© www.soinside.com 2019 - 2024. All rights reserved.