PowerShell工作流学习-2-工作流运行Powershell命令

关键点:

a)inlineScript 活动具有活动通用参数,但不具有PowerShell 通用参数,且inlineScript 脚本块中的命令和表达式不具有工作流的功能
b)默认inlineScript 活动在单独的进程中执行而不是和工作流同一进程中执行,但是可使用参数OutOfProcessActivity进行控制,如果需要删除或者还原相关配置使inlineScript 活动在工作流进程内或者进程外运行,请参考例b
c)工作流中定义的变量对 InlineScript 脚本块中的命令不可见,除非使用$Using修饰符
d)InlineScript 命令可以更改从工作流作用域导入的变量的值,但所做的更改在工作流作用域中不可见。 若要使其可见,则将更改的值返回到工作流作用域,请使用例d

e)PowerShell脚本(.ps1)需要在InlineScript 活动中运行

 

例b:

#工作流进程内运行

PS C:\Windows\system32> (Get-PSSessionConfiguration Microsoft.PowerShell.Workflow).OutOfProcessActivity
InlineScript

PS C:\Windows\system32>$o = New-PSWorkflowExecutionOption -OutOfProcessActivity ""

PS C:\Windows\system32>Set-PSSessionConfiguration Microsoft.PowerShell.Workflow -SessionTypeOption $o -Force

PS C:\Windows\system32> (Get-PSSessionConfiguration Microsoft.PowerShell.Workflow).OutOfProcessActivity

#还原配置,在工作流进程外运行

PS C:\Windows\system32> (Get-PSSessionConfiguration Microsoft.PowerShell.Workflow) | Unregister-PSSessionConfiguration 

PS C:\Windows\system32> Enable-PSRemoting -Force

PS C:\Windows\system32> (Get-PSSessionConfiguration Microsoft.PowerShell.Workflow).OutOfProcessActivity

InlineScript

 

 

例c:

workflow test-wf4
{
    $a = 3
    InlineScript {"Inline A0 = $a"}
    InlineScript {"Inline A1 = $Using:a"}
}

PS C:\Windows\system32> test-wf4
Inline A0 = 
Inline A1 = 3

 

例d:

workflow test-wf5
{
    $a = 3

    InlineScript {$a = $using:a+1; "Inline A = $a"}
    "Workflow A = $a"

     $a = InlineScript {$a = $Using:a+1; $a}
     "Workflow New A = $a"
}   

PS C:\Windows\system32> test-wf5
Inline A = 4
Workflow A = 3
Workflow New A = 4

 

例e:

workflow test-wf6
{
    $ie = InlineScript 
    {
        New-Object -ComObject InternetExplorer.Application -property @{navigate2="www.baidu.com"}
    }
    $ie.LocationName    
} 

test-wf6

PS C:\Windows\system32> D:\无标题2.ps1
百度一下,你就知道

 

posted @ 2017-07-05 14:25  万寿宫主  阅读(539)  评论(0编辑  收藏  举报