他们无论如何都是在不执行powershell脚本的情况下测试它的正确性。我知道你可以在 unix 中做类似的事情,但找不到 powershell 的等价物。
基本上我拥有的是一个脚本存储库,其中每个脚本都与规则相关联。如果触发规则,则脚本将执行,但我需要确保脚本有效,然后再将其放入存储库。
谢谢。
嗨,好吧,不幸的是 -whatif 命令是不够的。它是我想从 C# 运行时引擎检查的脚本的语法,如果引擎规则触发,它会触发脚本。在脚本触发之前,我将规则中的 IList 值写入其中,然后触发它。但是我需要确保它在语法上是正确的,否则我将不得不依靠规则编写器来确保它们是正确的,这是我做不到的,因为很多人会编写规则,只有一个 duff 脚本会带来发动机停机。我不能这样做,因为引擎是为六西格玛正常运行时间而设计的企业级产品。
我认为这样做的方法是使用它,这是一个 v2 库。
http://msdn.microsoft.com/en-us/library/system.management.automation.parseexception(VS.85).aspx
我认为有一种方法可以创建一个 ScriptBlock 并在它周围放置一个 try catch 来捕获 ParseException。有人可以告诉我该怎么做。这正在成为一个真正的挑战。
谢谢。
嘿,好吧,我与 MS 中的一个人(他是 sharepoint pm)进行了交谈,他与其中一个 powershell 人员交谈,他告诉我在 powershell v1 中没有真正的方法可以在不执行的情况下检查脚本的语法。所以我猜 -whatif 标志是最接近的,但不幸的是它不是静态检查器。好消息是,在 v2 中,有一种方法可以通过 Automation.PsParser 类 Tokenize 成员对输入流进行标记。这将根据 PS 语法对脚本进行标记,因此如果它是废话,它就是废话脚本。问题是 v2 还没有发布日期。
感谢帮助。鲍勃。