我希望使用powershell从文本块中恢复主机名。该块如下:
The computer attempted to validate the credentials for an account.
Authentication Package: MICROSOFT_AUTHENTICATION_PACKAGE_V1_0
Logon Account: svc.sXXX.d.fdb
Source Workstation: DIXXXEF01
Error Code: 0x0
正如您所看到的那样,它是一个多行文本块。目前我正在努力减少大约5演出安全日志的漏洞。我希望使用powershell regrex命令或类似的东西来恢复登录帐户和源工作站。
有什么想法吗?感谢。
ISJ
答案 0 :(得分:1)
将Get-Content与-ReadCount和-match一起使用并借用Bill的正则表达式:
Get-Content $file -ReadCount 1000 |
foreach { $_ -match '^Logon Account|^Source workstation' } |
Add-Content $newfile
您可以通过更改-ReadCount参数来调整它。通常,1000-5000的计数产生最佳结果。
您也可以使用Select-String,但它会返回MatchInfo对象,其中包含此应用程序不需要的许多其他数据。如果你确实需要它,那就太棒了,但是使用Select-String和使用-match一样,使用相同的正则表达需要大约4倍,如果你需要的只是字符串,那么Select-String就是矫枉过正。 (IMHO)
答案 1 :(得分:0)
Get-Content
和Select-String
:
get-content logfile.txt | select-string '^Logon Account|^Source workstation'
^
字符表示“行首”。有关详细信息,请参阅PowerShell帮助主题about_Regular_Expressions
。