共用方式為


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>]

Description

使用此 Cmdlet 將群組或步驟新增至現有的工作順序。 如需工作順序步驟的詳細資訊,請參閱 工作順序步驟

以程序設計方式將步驟新增至工作順序時,請務必瞭解步驟的索引順序。 為了協助將索引可視化,本文使用下列範例工作順序:

  • 步驟 1
  • 步驟 2
  • 步驟 3
  • 步驟 4
  • group5
    • 步驟 5.1
    • 步驟 5.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 腳本 步驟的步驟物件。 第三個命令會建立名為 Run scripts 的新自定義工作順序。 第四個命令會將新的工作順序物件透過管線傳遞至 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 來建立 設定工作順序變數 步驟的步驟物件。 然後,它會在索引 2 的步驟之後,將此步驟新增至名為 ts1 的工作順序。 使用描述中的範例工作順序,此命令會在步驟 2步驟 3 之間新增 newStep

$step = New-CMTSStepSetVariable -name "newStep" -TaskSequenceVariable "testVar" -TaskSequenceVariableValue "testValue"
Add-CMTaskSequenceStep -TaskSequenceName "ts1" -Step $step -InsertStepStartIndex 2

範例 4:複製工作順序並新增步驟

此範例會複製現有的工作順序,然後將其重新命名。 下一組步驟會重新設定安全性範圍。 然後,它會取得封裝的標識符,並從另一個步驟複製條件物件。 在最後一個群組中,它會建立使用封裝和條件物件的新執行 命令行 步驟。 然後,它會將新步驟新增至索引 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 新增步驟之工作順序的標識碼。 這個識別元是工作順序套件識別碼,例如 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。