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 百度一下,你就知道