Add-CMTaskSequenceStep
将步骤或组添加到任务序列。
语法
Add-CMTaskSequenceStep
[-InsertStepStartIndex <UInt32>]
-Step <IResultObject[]>
-InputObject <IResultObject>
[-DisableWildcardHandling]
[-ForceWildcardHandling]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Add-CMTaskSequenceStep
[-InsertStepStartIndex <UInt32>]
-Step <IResultObject[]>
-TaskSequenceId <String>
[-DisableWildcardHandling]
[-ForceWildcardHandling]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Add-CMTaskSequenceStep
[-InsertStepStartIndex <UInt32>]
-Step <IResultObject[]>
-TaskSequenceName <String>
[-DisableWildcardHandling]
[-ForceWildcardHandling]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
说明
使用此 cmdlet 可将组或步骤添加到现有任务序列。 有关任务序列步骤的详细信息,请参阅 任务序列步骤。
以编程方式向任务序列添加步骤时,请务必了解步骤的索引顺序。 为了帮助可视化索引,本文使用以下示例任务序列:
- step1
- 步骤 2
- step3
- step4
- group5
- 步骤 5.1
- step5.2
- 步骤5.3
- group5.4
- 步骤5.4.1
- 步骤5.5
- 步骤 6
使用 任务序列编辑器 添加步骤时,新步骤将添加到当前所选步骤之后。 此 cmdlet 的工作方式类似,它将步骤添加到指定的索引之后。 使用 InsertStepStartIndex 参数指定步骤索引。
此 cmdlet 只能将步骤添加到任务序列的主级别,而不能添加到组中。 若要在组中添加步骤,请使用 Set-CMTaskSequenceGroup。 例如,对于示例任务序列,如果使用 Add-CMTaskSequenceStep 和 InsertStepStartIndex 参数值 5
,则 cmdlet 会将新步骤添加到 group5 之后和 步骤 6 之前。
注意
从 Configuration Manager 站点驱动器运行 Configuration Manager cmdlet,例如 PS XYZ:\>
。 有关详细信息,请参阅 入门。
示例
示例 1:创建运行两个 PowerShell 脚本的自定义任务序列
在此示例中,前两个命令使用 New-CMTaskSequenceStepRunPowerShellScript cmdlet 为 运行 Powershell 脚本 步骤创建步骤对象。 第三个命令创建名为 “运行脚本”的新自定义任务序列。 第四个命令通过管道将新的任务序列对象传递到 Add-CMTaskSequenceStep,这将添加两个步骤。
$step1 = New-CMTaskSequenceStepRunPowerShellScript -Name "Run script 1" -PackageID $PackageId -ScriptName "script1.ps1" -ExecutionPolicy Bypass
$step2 = New-CMTaskSequenceStepRunPowerShellScript -Name "Run script 2" -PackageID $PackageId -ScriptName "script2.ps1" -ExecutionPolicy Bypass
$ts = New-CMTaskSequence -Name "Run scripts" -CustomTaskSequence
$ts | Add-CMTaskSequenceStep -Step ($step1, $step2)
生成的任务序列如下所示:
- 运行脚本 1
- 运行脚本 2
由于步骤在 Step 参数中的排序方式,因此按此方式对 步骤 进行排序。
示例 2:创建一个以不同顺序运行两个 PowerShell 脚本的自定义任务序列
此示例类似于示例 1,只不过它使用 Add-CMTaskSequenceStep cmdlet 的两个实例。
$step1 = New-CMTaskSequenceStepRunPowerShellScript -Name "Run script 1" -PackageID $PackageId -ScriptName "script1.ps1" -ExecutionPolicy Bypass
$step2 = New-CMTaskSequenceStepRunPowerShellScript -Name "Run script 2" -PackageID $PackageId -ScriptName "script2.ps1" -ExecutionPolicy Bypass
$ts = New-CMTaskSequence -Name "Run scripts" -CustomTaskSequence
$ts | Add-CMTaskSequenceStep -Step $step1
$ts | Add-CMTaskSequenceStep -Step $step2
生成的任务序列如下所示:
- 运行脚本 2
- 运行脚本 1
由于 每个 Add-CMTaskSequenceStep 实例的排序方式,并且两者均不使用 InsertStepStartIndex 参数,因此它们默认使用索引 0
。 因此,cmdlet 在第一步 之前 添加第二个步骤。
示例 3:在特定索引处添加步骤
此示例首先使用 New-CMTSStepSetVariable cmdlet 为 “设置任务序列变量 ”步骤创建步骤对象。 然后,它将此步骤添加到名为 ts1 的 任务序列,该任务序列位于索引 2 的步骤后面。 使用说明中的示例任务序列,此命令在步骤 2 和步骤 3 之间添加 newStep。
$step = New-CMTSStepSetVariable -name "newStep" -TaskSequenceVariable "testVar" -TaskSequenceVariableValue "testValue"
Add-CMTaskSequenceStep -TaskSequenceName "ts1" -Step $step -InsertStepStartIndex 2
示例 4:复制任务序列并添加新步骤
此示例复制现有任务序列,然后将其重命名。 下一组步骤将重新配置安全范围。 然后,它获取包的 ID,并从另一个步骤复制条件对象。 在最后一个组中,它会创建一个新的 运行命令行 步骤,该步骤使用包和条件对象。 然后,它将新步骤添加到索引 11 处的新任务序列。
$ts = Copy-CMTaskSequence -Name "Deploy Windows 10 (v1)"
$ts | Set-CMTaskSequence -NewName "Deploy Windows 10 (v2)"
$ts | Add-CMObjectSecurityScope -Name "Contoso main" | Out-Null
$ts | Remove-CMObjectSecurityScope -Name "Default" -Force |Out-Null
$pkgId = (Get-CMPackage -Name "Widget tool" -Fast).PackageID
$condition = ($ts | Get-CMTaskSequenceStep -StepName "Restart in Windows PE").Condition.Operands
$step = New-CMTaskSequenceStepRunCommandLine -CommandLine "widget.exe /q" -PackageId $pkgId -Name "Install Widget in Windows PE" -Condition $condition
$ts | Add-CMTaskSequenceStep -Step $step -InsertStepStartIndex 11
参数
-Confirm
提示你在运行 cmdlet 之前进行确认。
类型: | SwitchParameter |
别名: | cf |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-DisableWildcardHandling
此参数将通配符视为文本字符值。 不能将其与 ForceWildcardHandling 组合使用。
类型: | SwitchParameter |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-ForceWildcardHandling
此参数处理通配符,并可能导致意外行为, (不建议) 。 不能将其与 DisableWildcardHandling 组合使用。
类型: | SwitchParameter |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-InputObject
指定 cmdlet 向其添加步骤的任务序列对象。 若要获取此对象,请使用 Get-CMTaskSequence、 Copy-CMTaskSequence 或 New-CMTaskSequence cmdlet。
类型: | IResultObject |
别名: | TaskSequence |
Position: | Named |
默认值: | None |
必需: | True |
接受管道输入: | True |
接受通配符: | False |
-InsertStepStartIndex
为任务序列索引指定整数值。 cmdlet 在此指定索引之后添加新步骤。 例如,使用 Description 中的示例任务序列,如果指定值 4
,则 cmdlet 会在 步骤 4 之后添加新步骤。
如果指定值 0
,则 cmdlet 会在任务序列顶部添加新步骤。 如果未指定此参数,则此行为是默认行为。 例如,cmdlet 在步骤 1之前添加新步骤。
没有最大值。 如果指定的值大于最后一步的索引,则 cmdlet 会在任务序列末尾添加新步骤。 例如,如果指定 值 10
,则 cmdlet 会在 步骤 6 之后添加新步骤。
类型: | UInt32 |
别名: | InsertStepsStartIndex |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-Step
指定要添加到任务序列的一个或多个步骤对象。 若要获取此对象,请使用 New-CMTSStep* cmdlet 之一。 例如 Get-CMTSStepApplyDataImage。
类型: | IResultObject[] |
别名: | Steps |
Position: | Named |
默认值: | None |
必需: | True |
接受管道输入: | False |
接受通配符: | False |
-TaskSequenceId
指定 cmdlet 向其添加步骤的任务序列的 ID。 此 ID 是任务序列包 ID,例如 XYZ00861
。
类型: | String |
别名: | Id, TaskSequencePackageId |
Position: | Named |
默认值: | None |
必需: | True |
接受管道输入: | False |
接受通配符: | False |
-TaskSequenceName
指定 cmdlet 向其添加步骤的任务序列的名称。
类型: | String |
Position: | Named |
默认值: | None |
必需: | True |
接受管道输入: | False |
接受通配符: | False |
-WhatIf
显示在 cmdlet 运行时发生的情况。 cmdlet 不会运行。
类型: | SwitchParameter |
别名: | wi |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
输入
Microsoft.ConfigurationManagement.ManagementProvider.IResultObject
输出
System.Object
备注
虽然相关链接部分未列出,但可以使用 Get-CMTSStep*、 New-CMTSStep*、 Remove-CMTSStep*和 Set-CMTSStep* cmdlet。 例如:
- Get-CMTSStepApplyDataImage
- New-CMTSStepApplyDataImage
- Remove-CMTSStepApplyDataImage
- Set-CMTSStepApplyDataImage
每个任务序列步骤都有一组这些 cmdlet。