gpt4 book ai didi

powershell - 使用 powershell 验证文件中的文本 block

转载 作者:行者123 更新时间:2023-12-04 01:09:29 24 4
gpt4 key购买 nike

我有一个装满 Cisco 配置的文件夹。我很难找到一种方法来验证配置中的命令字符串。

我对单行命令没有问题,目前正在使用以下命令并 100% 成功:

Get-childitem -path $Path -recurse |foreach-object{if (-not (select-string -inputobject $_ -Pattern "banner login")){$_}} | select name | Out-file $OutPath\OutputName.txt

我想验证这样的命令:

    access-list 69 remark Name
access-list 69 permit x.x.x.x
access-list 69 permit x.x.x.x
access-list 69 permit x.x.x.x

所有配置中的 4 行都是相同的。我试过了..

    Get-childitem -path $Path -recurse |foreach-object{if (-not (select-string -inputobject $_ -Pattern "access-list 69 remark Name", "access-class xx in", "access-list 69 permit x.x.x.x", "access-list 69 permit x.x.x.x", "access-list 69 permit x.x.x.x")){$_}} | select name | Out-file $OutPath\OutputText.txt

...但这只会单独检查每个命令,并将所有配置文件报告为合规。我正在尝试以该确切顺序验证该特定 block 。感谢您的宝贵时间。

最佳答案

这将保留顺序并处理空格/换行符:

$CfgBlock = @(
'access-list 69 remark Name',
'access-class xx in',
'access-list 69 permit x.x.x.x',
'access-list 69 permit x.x.x.x',
'access-list 69 permit x.x.x.x'
)

$CfgRegex = '\s*' + (($CfgBlock -split '\s+' | ForEach-Object {[regex]::Escape($_)}) -join '\s+') + '\s*'

Get-ChildItem -Path $Path -Recurse | Where-Object {
(Get-Content -Path $_.FullName -Raw) -notmatch $CfgRegex
} | Select-Object -Property Name | Out-file $OutPath\OutputText.txt

关于powershell - 使用 powershell 验证文件中的文本 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36927327/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com