我的组织有大量的PowerShell脚本。其中一些是处理逻辑/执行某些操作的直接脚本,但其他脚本本质上是“模块”(但不是 * 实际 * 模块),因为它们只包含我们使用的常见功能,这些功能由其他脚本导入和使用。
我试图找出一种方法来确定.PS1文件是一个“脚本”,还是一个“模块”,因为它只包含函数,不处理任何逻辑。
我的想法是我只捕获脚本的内容,看看它是否只包含一个或多个:function X { * }
,没有其他的。可能使用正则表达式来匹配该模式。
但这看起来很混乱,所以我想知道是否有人有任何想法,我如何能做得更好?
我知道我可能会让一些人推荐我们以PowerShell的方式构建模块,但这些都是已经开发的预先存在的脚本,我当然没有权力告诉我的整个组织改变他们编写脚本的方式。
1条答案
按热度按时间qmelpv7a1#
我的想法是我只捕获脚本的内容,看看它是否只包含一个或多个:函数X { * },除此之外什么都没有。
真是个好计划!
[...]可能使用正则表达式来匹配该模式。
这计划太烂了!
使用PowerShell自己的解析器来解析现有脚本,而不是regex:
现在我们已经分析了所有脚本中的顶级语句,我们可以开始根据大多数可能是“模块式”的期望来过滤它们: