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