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-CMTaskSequenceStepInsertStepStartIndex 参数值 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-CMTaskSequenceCopy-CMTaskSequenceNew-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。 例如:

每个任务序列步骤都有一组这些 cmdlet。