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

从含ERROR 5的日志行中提取UNC路径内的用户名

解决方案:提取日志中ERROR 5行的用户名

嘿,我帮你把这段PowerShell代码完善好,刚好能满足你提取日志里ERROR 5行用户名的需求!

需求回顾

  • 从指定日志文件中筛选包含ERROR 5 (0x00000005)的行
  • 提取这些行UNC路径里第4、5个反斜杠之间的用户名(比如示例中的johnsmith)
  • 将提取到的用户名写入新的文本文件

完整PowerShell代码(适配示例路径)

如果你的日志里UNC路径都是\\myserver\shares\用户名\...这种固定结构,可以用下面的精准匹配代码:

# 定义日志文件路径和输出文件路径
$logFilePath = "C:\temp\testlog.txt"
$outputFilePath = "C:\temp\extracted_usernames.txt"

# 读取日志、筛选目标行并提取用户名
Get-Content $logFilePath | ForEach-Object {
    # 匹配包含ERROR 5的目标行,同时捕获用户名
    if ($_ -match 'ERROR 5 \(0x00000005\) Copying File \\{2}myserver\\{2}shares\\{2}([^\\]+)') {
        # 输出捕获到的用户名
        $matches[1]
    }
} | Out-File $outputFilePath -Encoding UTF8

Write-Host "提取完成!结果已保存到: $outputFilePath"

通用版代码(适配任意UNC路径结构)

如果日志里的UNC服务器或共享名不固定,只想提取第4、5个反斜杠之间的内容,可以用这个更灵活的版本:

$logFilePath = "C:\temp\testlog.txt"
$outputFilePath = "C:\temp\extracted_usernames.txt"

Get-Content $logFilePath | ForEach-Object {
    # 匹配ERROR 5行,并捕获UNC路径中第4-5个反斜杠间的内容
    if ($_ -match 'ERROR 5 \(0x00000005\) Copying File \\{2}[^\\]+\\{2}[^\\]+\\{2}([^\\]+)') {
        $matches[1]
    }
} | Out-File $outputFilePath -Encoding UTF8

代码关键点解释

  • 正则表达式里的\\{2}:因为PowerShell中反斜杠需要转义,所以用\\表示一个实际的反斜杠,{2}表示连续匹配两次(对应UNC路径开头的\\)
  • ([^\\]+):这是正则捕获组,匹配所有非反斜杠的字符,刚好对应我们要提取的用户名
  • $matches[1]:PowerShell中匹配正则后,$matches对象会存储捕获组的内容,[1]就是第一个捕获组的结果(也就是用户名)
  • Out-File -Encoding UTF8:确保输出文件用UTF-8编码,避免中文或特殊字符乱码

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:21:13