如何使用Powershell从文本文件行中提取Domain域名与Username用户名
解决方案
通过正则匹配精准提取domain\username格式的内容,无需硬编码字符串替换,容错性更高。
代码实现
提取最新的登录用户(取最后一条匹配结果,匹配你的原需求)
# 读取日志文件,筛选包含登录用户信息的行,取最后一条 $logLine = Get-Content "C:\Windows\ccm\logs\execmgr.log" | Where-Object { $_ -match 'The logged on user is (\w+\\\w+)' } | Select-Object -Last 1 # 提取domain\username格式结果 $domainUser = $matches[1] # 输出验证结果 $domainUser
提取日志中所有唯一的登录用户
Get-Content "C:\Windows\ccm\logs\execmgr.log" | ForEach-Object { if ($_ -match 'The logged on user is (\w+\\\w+)') { $matches[1] } } | Where-Object { $_ } | Select-Object -Unique
原代码问题说明
- 误用
Get-Content $fil:$fil是你替换前缀后的字符串内容,不是文件路径,无需再次调用Get-Content读取 - 硬编码字符串替换容错性差:如果日志行的前缀出现微小变动,提取逻辑就会失效,用正则匹配目标格式适配性更强
内容的提问来源于stack exchange,提问作者Varun
相关产品推荐
相关产品推荐

