在powershell中为所有模块设置严格模式

时间:2015-06-16 18:38:42

标签: powershell

目前我在我的脚本中使用了以下结构:

Set-StrictMode -Version Latest

现在,我在ps1文件中设置严格模式,以便在运行时至少获得一些类型安全性。不幸的是,克隆Set-StrictMode将仅对当前范围和所有子范围启用严格模式(这是设计的。证明:https://technet.microsoft.com/en-us/library/hh849692.aspx)。

据我了解当前的PS架构,在ps1文件中更改严格模式会改变脚本级别配置。但是模块有自己的脚本范围,因此模块不会继承父项规则。

作为一种解决方法,我可以将$VerbosePreferences放到每个PSM1文件中,但它似乎不是最好的方法,因为我无法给出我的模块的客户端来决定,打开严格模式或不

{{1}}配置存在同样的问题。每个范围也启用此配置,因此我必须跨模块边界传播此信息。

有关如何全局更改严格模式和详细偏好的任何建议吗?

P.S。为此目的更改$ profile不是一种选择。

1 个答案:

答案 0 :(得分:3)

如果这些是您自己编写的模块,那么我建议您在模块中设置所需的严格模式。它只适用于模块内部的代码,因此调用者设置的模块外部代码的设置无关紧要。

如果这些是其他人编写的模块,那么您不希望更改该代码的严格模式(或缺少该模式),因为它没有使用严格模式进行测试,并且可能会因此而中断。