【发布时间】:2010-10-19 20:28:40
【问题描述】:
他们无论如何都可以在不执行powershell脚本的情况下测试它的正确性。我知道你可以在 unix 中做类似的事情,但找不到 powershell 的等价物。
基本上我拥有的是一个脚本存储库,其中每个脚本都与规则相关联。如果触发规则,则脚本将执行,但我需要确保脚本有效,然后再将其放入存储库。
谢谢。
嗨, 好吧,不幸的是 -whatif 命令还不够。它是我想从 C# 运行时引擎检查的脚本的语法,如果引擎规则触发,它会触发脚本。在脚本触发之前,我将规则中的 IList 值写入其中,然后触发它。但是我需要确保它在语法上是正确的,否则我将不得不依靠规则编写器来确保它们是正确的,这是我做不到的,因为很多人会编写规则,只有一个 duff 脚本会带来发动机停机。我不能这样做,因为引擎是为 6 sigma 正常运行时间而设计的企业级产品。
我认为这样做的方法是使用这个,这是一个 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 还没有发布日期。
感谢您的帮助。 鲍勃。
【问题讨论】:
-
好吧,我找到了这个,虽然我不知道如何申请。它是否需要每个脚本上的代码块,以及如何将状态恢复到 c#。 keithhill.spaces.live.com/Blog/cns!5A8D2641E0963A97!6036.entry
-
Hej,谢谢分享有关此的宝贵信息。你还需要 ParseException 方面的帮助吗?
标签: c# powershell scripting syntax-checking