【发布时间】:2021-07-22 07:38:11
【问题描述】:
我正在构建一个脚本,该脚本将分析配置文件(cisco 交换机配置)并根据某些发现构建报告。遗憾的是,必须将调查结果记录在特定的表格上,所以除了手动生成每个表格之外,这条痛苦的道路是我唯一的选择。
我正在尝试做的事情: 使用以下内容,我试图将以下多行表达式拉入 PS 进行评估
interface vlan1
no ip address
shutdown
!
我找到了多个指向两个选项之一的来源-第一个(也是最简单的)是使用“-raw”开关将文件加载到 Get-content 中,以便将整个文件评估为单个字符串,并且然后使用“select-string”命令输出我要查找的具体信息。
我的基本代码如下所示
if (get-content -path U:\Testing\Test.txt -Raw | select-string -Pattern "(?ms)interface vlan1.*no ip address.*(?!no shutdown)shutdown.*\!" -Quiet)
{
write-host('pass')
}
else
{
write-host('fail')
}
预期结果:如果字符串为真 - 我会将结果附加到文件(我已经拥有的那部分)
如果配置不包含专门的“关闭”(没有单词 no),那么它将被注释为这样(我也有这个过程)
在此先感谢您的帮助 - 希望本文简洁明了。
进一步明确:脚本返回误报/误报。在 if 命令之外运行 get-content + select-string 时,我基本上得到 -raw 输出,但字符串本身不匹配,这让我相信我在行首(接口 vlan1)上遇到问题和结束行(!)
我已经尝试过使用正则表达式字符串的结构来尝试梳理出一个解决方案,但是对于使用 select-string 时多行输出的使用我仍然有点模糊。
【问题讨论】:
标签: powershell