BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

关于Windows Workflow Foundation对PowerShell 3支持的更多细节介绍

| 作者 Jonathan Allen 关注 525 他的粉丝 ,译者 曹如进 关注 0 他的粉丝 发布于 2012年7月3日. 估计阅读时间: 3 分钟 | 如何结合区块链技术,帮助企业降本增效?让我们深度了解几个成功的案例。

前不久,微软发布了关于Windows PowerShell工作流更多的一些细节。Windows PowerShell工作流,也称作PSWF,它是PowerShell 3中的特性,PSWF可以让管理员“跨越多态机器、设备或IT过程可靠地执行长时间运行的任务”。由于我们谈及的是Windows工作流,因此这里的“长时间运行”可理解为数小时甚至数天。

虽然针对PSWF的工作流可以使用Windows Workflow Foundation中相同的XAML标记编写,但是大部分PowerShell用户可能更倾向于选择新的基于脚本的工作流语法。新语法是PowerShell的一个扩展,它增添了如下概念:

  • workflow:用于定义工作流。注意:工作流可以借助它嵌套在其他工作流中。
  • inlinescript:一般情况下,工作流中的每行操作都会分离执行。inlinescript可以将一组行进行聚合,从而让它们可以共享本地变量。内联脚本块还能够让你使用一些工作流内部不让使用的PowerShell语法。
  • foreach –parallel: 并行执行构造体中的每一个条目。
  • parallel:并行执行构造体中的每一项任务,不过不会保证执行顺序。
  • sequence:按顺序执行构造体中的每一项任务。这通常用于并行块内部以构造一组顺序语句。

有一点很重要的是,PowerShell工作流在许多方面都是完整PowerShell语法的子集。与一般的PowerShell脚本不同,PowerShell工作流是静态编译的。这阻止了大量的动态特性,如定位参数与动态参数。另外,工作流需要在任意时刻进行持久化的需求也阻止了点语法调用方法。“这意味着你获得了一个可工作的活动对象,但如果工作流在生成对象调用与使用其方法调用间进行持久化,那么该对象无法工作。”

还有一些cmdlets不能作为工作流活动。如前面所述,工作流中的每一行会在自己的独立PowerShell会话中执行;因此所有改变PowerShell会话状态的cmdlets都没有意义。类似的,支持事务的cmdlets也在支持范畴之外。

PSWF的设计以扩展性为主。具体来说,它设计用于向外扩展。一个工作流可以跨越“上千个托管结点“进行分布,这使得管理大型服务器群几乎同管理单台机器一样简单。例如,在若干机器上启动工作流,你只需要使用PSComputerName参数及机器名列表即可调用工作流。这些特性替换了普通的PowerShell远程处理特性。

长时间运行的工作流在后台运行可能更好一些。为了帮助实现这点,PSWF集成了PowerShell任务基础架构。通过简单地借助AsJob参数调用工作流便可以使用常规的任务cmdlets了。

查看英文原文:More on Windows Workflow Foundation Support for PowerShell 3

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT