所以我有一个PowerShell脚本,它与其他几个外部第三方EXE实用程序集成。每个都返回它自己的错误类型以及一些返回非错误相关的输出到stderr(是的设计很糟糕,我知道,我没有写这些实用程序)。所以我目前正在做的是解析每个实用程序的输出并进行一些关键字匹配。这种方法确实有效但我觉得当我使用这些脚本和实用程序时,我将不得不为错误实际添加更多异常。所以我需要创建一些可扩展的东西,可能是一种我可以添加到外部文件中的结构,如模块。
我正在考虑利用自定义PSObject的功能来完成这项工作,但我正在努力解决细节问题。目前,我对每个实用程序的解析例程是:
foreach($errtype in {'error','fail','exception'})
{
if($JobOut -match $errtype){ $Status = 'Failure' }
else if($JobOut -match 'Warning'){$Status = 'Warning' }
else { $Status = 'Success' }
}
所以这看起来非常简单,直到我遇到一些实用程序,其中包含$ JobOut中的$ errtype中的一些关键字并非错误。所以现在我必须在逻辑中添加一些例外:
foreach($errtype in {'error','fail','exception'})
{
if($JobOut -match 'error' -and(-not($JobOut -match 'Error Log' }
elseif($JobOut -match $errtype){ $Status = 'Failure' }
else if($JobOut -match 'Warning'){$Status = 'Warning' }
else { $Status = 'Success' }
}
因此,您可以看到此方法可能会快速失控,我不希望每次遇到新错误时都不会开始编辑核心代码以添加新的错误规则。
是否有办法为每个包含错误逻辑的实用程序创建错误结构。还有一些很容易添加新规则的东西吗?
非常感谢任何帮助。
答案 0 :(得分:1)
我认为开关在这里会做得很好。
它非常基础,但可以很容易地修改并且可以高度扩展,我喜欢你可以根据交换机的输入进行操作,这可以用于记录或修复。
创建一个功能,允许您轻松地为开关提供输入,然后使用所有错误代码或单词等维护该功能,然后只需使用所需的功能。