首页 > 解决方案 > 解析日志文件 - 从字符串数组中查找包含值的行

问题描述

这可能真的很简单......但是我如何检查日志/配置文件的哪些行包含字符串数组中的任何字符串?

文件示例(我想要第 3 行和第 5 行)

[Privilege Rights]
SeSystemtimePrivilege = *S-1-5-19,*S-1-5-21-2262136377-125853592-2400401627-1119,*S-1-5-32-544
SeDenyNetworkLogonRight = Guest
SeCreatePagefilePrivilege = *S-1-5-32-544
SeDenyServiceLogonRight = *S-1-5-21-2262136377-125853592-2400401627-1119
SeRemoteShutdownPrivilege = *S-1-5-32-544
SeAuditPrivilege = *S-1-5-19,*S-1-5-20

我正在使用的脚本:

$SeRightsArray = @(
'SeDenyNetworkLogonRight',
'SeDenyBatchLogonRight',
'SeDenyServiceLogonRight',
'SeDenyInteractiveLogonRight',
'SeDenyRemoteInteractiveLogonRight')

 $LocalPolicyExport = gc "C:\local-security-policy.inf"

Foreach($Line in $LocalPolicyExport){
    if ($Line -match $SeRightsArray ){
        write-host "FOUND - $line" 
    }
}

通常我会使用 -contains 或 -in 之类的东西,但这不起作用

标签: powershell

解决方案


您可以使用gc "C:\local-security-policy.inf" | select-string $seRightsArray. 不需要循环

PS C:\> gc .\test.txt|select-string $SeRightsArray

SeDenyNetworkLogonRight = Guest
SeDenyServiceLogonRight = *S-1-5-21-2262136377-125853592-2400401627-1119

推荐阅读