在WF4 beta1中与PowerShell交互提供了两个活动InvokePowerShell和InvokePowerShell<T>活动
InvokePowerShell:调用一个不包含返回值的PowerShell cmdlet。InvokePowerShell可以用来调用简单的cmdlets和脚本。我们还可以向cmdlet传递参数和输入对象。执行之后,此活动会提供一组错误信息(如果发生错误的话)。
InvokePowerShell<T>:此活动调用PowerShell cmdlet,并接收返回的结果。这种类型的活动都要比非泛型版本多一个InitializationAction。InitializationAction用来将cmdlet的执行结果隐射到工作流的变量。
下面就举例说明这个两个活动如何使用,下面的例子中我们完成如下功能,输入一个进程名,然后调用powershell停止该进程,在获取最新的所有进程并显示出来,我们首先来完成几个自定义活动:
1.用于接收输入的活动ReadLine,如下:
namespace CaryPowerShell { using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Activities; public class ReadLine : NativeActivity { public OutArgument<string> Result { get; set; } public InArgument<string> BookmarkName { get; set; } protected override void Execute(ActivityExecutionContext context) { string name = this.BookmarkName.Get(context); if (name == null) { throw new Exception(string.Format("ReadLine {0}: 书签不能为空",this.DisplayName)); } context.CreateNamedBookmark(name, new BookmarkCallback(OnReadComplete)); } void OnReadComplete(ActivityExecutionContext context, Bookmark bookmark, object state) { string input = state as string; context.SetValue(this.Result, input); } } }
2.用于输出进程信息的活动PrintResult,如下:
namespace CaryPowerShell { using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Activities; public class PrintResult<T> : CodeActivity<T> { public InArgument<ICollection<T>> Collection { get; set; } protected override void Execute(CodeActivityContext context) { ICollection<T> underlyingCollection = this.Collection.Get<ICollection<T>>(context); if (underlyingCollection.Count == 0) { Console.WriteLine("没有进程"); } else { foreach (T obj in underlyingCollection) { Console.WriteLine(obj.ToString()); } } } } }
3.获取进程的活动GetProcesses,使用的是泛型版本的InvokePowerShell<T>,如下图:
4.停止进程的活动StopProcess,使用的是InvokePowerShell活动,如下图:
5.我们设计的工作流如下图:
6.宿主程序如下:
namespace CaryPowerShell { using System; using System.Linq; using System.Threading; using System.Activities; using System.Activities.Statements; class Program { static void Main(string[] args) { bool running = true; AutoResetEvent syncEvent = new AutoResetEvent(false); WorkflowInstance myInstance = new WorkflowInstance(new Sequence1()); myInstance.OnCompleted = delegate(WorkflowCompletedEventArgs e) { running = false; syncEvent.Set(); }; myInstance.OnIdle = delegate() { syncEvent.Set(); return IdleAction.Nothing; }; myInstance.OnUnhandledException = delegate(WorkflowUnhandledExceptionEventArgs e) { Console.WriteLine(e.UnhandledException.ToString()); return UnhandledExceptionAction.Terminate; }; myInstance.OnAborted = delegate(WorkflowAbortedEventArgs e) { Console.WriteLine(e.Reason); syncEvent.Set(); }; myInstance.Run(); // main loop (manages bookmarks) while (running) { if (!syncEvent.WaitOne(10, false)) { if (running) { if (myInstance.GetAllBookmarks().Count > 0) { string bookmarkName = myInstance.GetAllBookmarks()[0].BookmarkName; myInstance.ResumeBookmark(bookmarkName, Console.ReadLine()); syncEvent.WaitOne(); } } } } System.Console.WriteLine("工作流执行结束"); System.Console.ReadKey(); } } }
8.相关文章:
WF4.0 Beta1之旅(1):基本介绍
WF4.0 Beta1之旅(2):异常处理
WF4.0 Beta1之旅(3):全新的FlowChart
WF4.0 Beta1之旅(4):Bookmark的使用
WF4.0 Beta1之旅(5):规则引擎的变化
WF4.0 Beta1之旅(6):自定义活动
发表评论
-
平淡的2007
2007-12-24 08:04 817早上起来,送女朋友去公交车站,然后回来赶紧打开电脑,先 ... -
DreamSpark发布,高校学生免费使用Visual Studio 2008 Professional Edition 等微软软件
2008-02-20 13:23 1416今天上网无意中搜索到学生可以免费使用VS2008专业版,后来又 ... -
坚持学习WF(1):从HelloWorld开始
2008-04-04 16:30 892[置顶]坚持学习WF文章索 ... -
坚持学习WF(2):WF创作模式和设计时工具
2008-04-05 17:19 639[置顶]坚持学习WF文章索 ... -
坚持学习WF(3):WF框架概览
2008-04-08 07:27 783[置顶]坚持学习WF文章索 ... -
坚持学习WF(4):活动(Activity)和依赖属性(DependencyProperty)
2008-04-12 00:01 1148[置顶]坚持学习WF文章索引 活动(Activity) 活动 ... -
坚持学习WF(5):自定义活动(CustomActivity)
2008-04-13 15:25 929当WF提供的标准活动不能满足我们的需求的时候,我们就需要定义自 ... -
MOSS点滴(1):如何开发和部署feature
2008-04-16 21:35 836Features 是MOSS 2007以开箱即用的一套新功能, ... -
MOSS点滴(2):自定义Application Page
2008-04-19 20:07 845在MOSS中后台管理的页面都是Application Pag ... -
坚持学习WF(6):开发可复用的宿主程序
2008-04-21 21:45 696我们之前写工作流宿主 ... -
MOSS点滴(3):说说MOSS中的母版页
2008-04-25 21:15 1189MOSS中有两种页面:Site P ... -
MOSS点滴(4):实现Form认证
2008-04-29 21:12 705本文主要参考了网上的一些文章,但有些文章有些地方说的不是很明确 ... -
坚持学习WF(7):流程控制(Flow Control)
2008-04-30 18:10 839本文主要说说WF中和流 ... -
坚持学习WF(8):本地服务之调用外部方法
2008-05-09 08:17 761WF提供了一组核心服务 ... -
MOSS中的WebPart开发
2008-05-10 13:53 1062由于在asp.net1.1的时候asp.net中还没有webp ... -
坚持学习WF(9):本地服务之事件处理
2008-05-28 07:49 800[置顶]坚持学习WF文章索引 一:先来介绍两个活动 Even ... -
坚持学习WF(10):在工作流中使用关联
2008-06-01 13:03 692[置顶]坚持学习WF文章索 ... -
坚持学习WF(11):工作流通信与队列
2008-06-07 15:45 737[置顶]坚持学习WF文章索引 WF 提供的通信模型是构建于 ... -
MOSS中创建自定义内容类型
2008-06-12 20:23 1108一:简要介绍 某类内容 ... -
.NET中IDisposable接口的基本使用
2008-06-15 12:01 950首先来看MSDN中关于这个接口的说明: [ComVisible ...
相关推荐
powershell4.0完整升级包(windows powershell升级补丁系统4.0版本) windows08R2 powershell升级到4.0的完整升级包,包含所有需要的依赖包。 注意:只适用于08R2系统; 另外:powershell4.0功能强大 可以批量添加AD域...
windows08R2 powershell升级到4.0的完整升级包,包含所有需要的依赖包。 注意:只适用于08R2系统; 另外:powershell4.0功能强大 可以批量添加AD域用户及exchange邮箱账号
PowerShell 4.0 支持工作流(Workflow),这是一种基于Windows Workflow Foundation (WF) 的强大功能。工作流可以将复杂的任务分解为一系列步骤,允许并发执行和错误处理,非常适合长时间运行的任务和跨多个系统...
PowerShell 4.0是Windows Server 2021 R2和Windows 8.1引入的一个重要更新,显著提升了任务自动化的效率和安全性。这一版本的PowerShell在多个方面进行了改进,包括期望状态配置(Desired State Configuration, DSC...
标题 "exchange/powershell,Java调用powershell开通邮箱" 暗示了这是一个关于使用Java编程语言调用PowerShell脚本在Exchange服务器上创建邮箱的教程或项目。Exchange是微软提供的一款企业级电子邮件服务器软件,而...
使用PowerShell调用Power BI REST API的示例。 Microsoft Power BI PowerShell示例 介绍 此存储库包含使用PowerShell调用Power BI REST API的示例。 每个PowerShell脚本都是自记录的。 触发计划的刷新并检查刷新...
《Windows PowerShell 4.0:深入解析与应用》 Windows PowerShell 4.0 是微软推出的一个强大命令行脚本环境,它为系统管理员和开发者提供了更高效、更灵活的工具来管理和自动化Windows操作系统。该版本的PowerShell...
**Windows PowerShell系列课程(1):PowerShell概览及使用技巧** Windows PowerShell是Microsoft开发的一种命令行外壳程序和脚本环境,专为系统管理员和高级用户设计,旨在增强对Windows操作系统的管理和自动化能力...
### Powershell调用入口的优先级 在PowerShell中,当执行某个命令时,系统会按照一定的优先级顺序来查找并执行相应的命令处理程序。理解这些优先级规则对于有效地使用PowerShell至关重要。本文将详细介绍PowerShell...
它具有强大的功能,其中之一就是能够调用其他系统组件,如PowerShell。PowerShell是一种命令行shell和脚本语言,由Microsoft开发,旨在增强系统管理员对操作系统及应用程序的管理能力。本文将深入探讨如何在C#中调用...
java 调用 powershell 并传参 返回
1. **调用 PowerShell 命令**: 在 Java 中,我们可以使用 `java.lang.Runtime.getRuntime().exec()` 方法来执行外部命令。对于 PowerShell,我们需要先启动 PowerShell 进程,然后执行相应的命令。例如,调用 `...
本篇文章将深入探讨如何使用PowerShell调用WebService,这是一项基础且实用的技能,尤其是在自动化任务和系统集成中。 首先,让我们理解WebService是什么。WebService是一种基于Web的、标准化的接口,它允许不同...
5. **PowerShell版本兼容性**: PowerShell有多个版本,从最初的1.0到最新的7.x,需要注意不同版本之间的API差异和兼容性问题。 6. **社区和资源**: PowerShell有一个庞大的社区,包括论坛、博客、GitHub上的开源...
1. **PowerShell基础概念**:了解PowerShell的工作原理,包括其与传统CMD的区别、PowerShell的核心组件如Cmdlets(命令)、Providers(提供者)和Session State(会话状态)。 2. **PowerShell语法**:掌握...
Windows PowerShell 4.0是一种强大的命令行环境,用于管理和自动化Windows操作系统及相关的应用程序。它引入了许多功能和操作符,使得脚本编写和任务自动化变得更加高效。以下是对标题和描述中涉及的一些关键知识点...
PowerShell-7.4.3-win-x64.msi 安装 PowerShell 是微软开发的一种命令行 shell 和脚本语言,它设计用于系统管理任务和自动化。相比传统的命令提示符(CMD),PowerShell 提供了更强大、灵活的功能集,特别是对于...
Windows PowerShell 4.0 for .NET Developers 英文无水印pdf pdf所有页面使用FoxitReader和PDF-XChangeViewer测试都可以打开 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权...
1. ** Desired State Configuration (DSC)**: DSC是PowerShell 4.0引入的一项核心功能,它提供了一种声明式的方法来管理Windows服务器的配置。DSC允许管理员定义期望的系统状态,并自动维护这些状态,确保系统的合规...