WEB开发网
开发学院软件开发C语言 WF4.0 Beta1之旅(7):WF调用PowerShell 阅读

WF4.0 Beta1之旅(7):WF调用PowerShell

 2010-09-30 21:05:45 来源:WEB开发网   
核心提示:在WF4 beta1中与PowerShell交互提供了两个活动InvokePowerShell和InvokePowerShell<T>活动InvokePowerShell:调用一个不包含返回值的PowerShell cmdlet,InvokePowerShell可以用来调用简单的cmdlets和脚本,WF4

在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);
        }
    }
}

1 2 3  下一页

Tags:WF 之旅

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接