找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 14885|回复: 4

[问题求助] PowerShell怎样只取异常消息中的at开头的那行?

[复制链接]
发表于 2022-7-10 13:43:14 | 显示全部楼层 |阅读模式
各位大佬, 下面代码可以显示所有的异常错误信息,
但是我只想显示其中的at开头的那些行(可能会有多个at开头的情况),同时把路径删除掉
自己写了代码, 能取到at开头行, 但是感觉应该有更简单的方法, 求指点
例如取到下面错误信息后:
At C:\Users\Administrator\Desktop\AA.ps1:5 char:2
再删除路径,最终需要显示如下的字符
At 5 char:2
  1. try
  2. {
  3.         start "abc.exe"
  4. }
  5. catch
  6. {
  7.         $_.Exception.Message
  8. }
复制代码
自己写的代码:
  1. try
  2. {
  3.         start "abc.exe"
  4. }
  5. catch
  6. {
  7.         (($_ | Out-String) -split '\r\n' | Select-String '^at' | Out-String).trim()
  8. }
复制代码
发表于 2022-7-10 15:01:42 | 显示全部楼层
  1. try
  2. {
  3.         start "abc.exe"
  4. }
  5. catch
  6. {
  7.         ($_.InvocationInfo.PositionMessage -split '\r\n')[0]
  8. }
复制代码
 楼主| 发表于 2022-7-10 17:16:14 | 显示全部楼层
回复 2# flashercs


    多谢大佬,

At C:\Users\Administrator\Desktop\AA.ps1:5 char:2
把上面的路径删除,最终需要显示如下的字符
At 5 char:2
我写了下面的代码, 但是不能生效
($_.InvocationInfo.PositionMessage -split '\r\n')[0] -replace 'At.+:.+:','At'
 楼主| 发表于 2022-7-10 17:24:29 | 显示全部楼层
本帖最后由 小白龙 于 2022-7-10 17:26 编辑

回复 2# flashercs


   还发现一个问题, 换了一个命令, 就不能输出位置信息了,  有办法在所有情况下, 只显示错误的位置信息吗?

try
{
        #start "abc.exe"
        copy 'abc' 'cde'
}
catch
{
        $_.InvocationInfo.PositionMessage
}
发表于 2022-7-10 17:56:53 | 显示全部楼层
本帖最后由 flashercs 于 2022-7-10 18:04 编辑
  1. $ErrorActionPreference = 'Stop'
  2. try{
  3. # comment
  4. copy 'abc' 'efdf'

  5. }catch{
  6. 'At line:{0} char:{1}' -f $_.InvocationInfo.ScriptLineNumber,$_.InvocationInfo.OffsetInLine
  7. }
复制代码
powershell的exception分为两类:termination error, non termination error.只有致命错误才能被catch 捕获.

评分

参与人数 1技术 +1 收起 理由
小白龙 + 1 多谢大佬

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 02:50 , Processed in 0.010309 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表