共用方式為


如何刪除作系統部署工作順序動作

您可以從工作順序步驟中移除動作,以 Configuration Manager 刪除作系統部署工作順序動作。

刪除工作順序動作

  1. 設定與SMS提供者的連線。 如需詳細資訊,請 參閱SMS提供者基本概念

  2. 取得工作順序 (SMS_TaskSequence) 物件。 如需詳細資訊,請參閱 如何建立作系統部署工作順序

  3. 從陣列屬性中 SMS_TaskSequence.Steps 移除動作。

範例

下列範例方法會從工作順序中刪除動作。 藉由檢查 Windows Management Instrumentation (WMI) 屬性__SUPERCLASS,以確保它衍生自SMS_TaskSequenceAction,即可將動作識別為動作。

如需呼叫範例程式代碼的相關信息,請參閱呼叫 Configuration Manager 代碼段

Sub RemoveAction (connection, taskSequence, actionName)

    Dim i
    Dim newArray
    Dim actionStep

    If taskSequence.SystemProperties_("__CLASS")<>"SMS_TaskSequence" Then
        wscript.echo "Not a task sequence"
        Exit Sub
    End If

    if IsNull(taskSequence.Steps) Then
        Wscript.Echo "No steps"
        Exit Sub
    End If

    ' Create an array to hold copied steps.
    newArray = Array(taskSequence.Steps)
    ReDim newArray(UBound(taskSequence.Steps))

    ' Copy the steps into the array and remove the matching action.
    i=0
    for each  actionStep in taskSequence.Steps
        If actionStep.Name = actionName and _
          actionStep.SystemProperties_("__SUPERCLASS") = "SMS_TaskSequence_Action" Then
             ReDim preserve newArray(UBound(newArray)-1) ' shrink the Array
        else
           Set newArray(i)=actionStep ' copy it
           i=i+1
        End If
     Next

     ' Assign new array back to the task sequence.
     taskSequence.Steps=newArray

End Sub
public void RemoveAction(
    IResultObject taskSequence,
    string actionName)
{
    try
    {
        // Get a list of steps.
        List<IResultObject> actionSteps = taskSequence.GetArrayItems("Steps");

        // Find the action to be deleted.
        foreach (IResultObject actionStep in actionSteps)
        {
            if (actionStep["Name"].StringValue == actionName && actionStep["__SUPERCLASS"].StringValue == "SMS_TaskSequence_Action")
            {
                // Delete the action.
                actionSteps.Remove(actionStep);
                break;
            }
        }

        // Update the task sequence.
        taskSequence.SetArrayItems("Steps", actionSteps);
    }
    catch (Exception e)
    {
        Console.WriteLine("Failed to remove action: " + e.Message);
        throw;
    }
}

範例方法具有下列參數:

參數 Type 描述
Connection -管理:WqlConnectionManager
- VBScript: SWbemServices
SMS 提供者的有效連線。
taskSequence -管理: IResultObject
- VBScript: SWbemObject
包含要刪除之動作的工作順序。
actionName -管理: String
- VBScript: String
要刪除的動作名稱。 這可以從 SMS_TaskSequenceAction.Name 屬性取得。

正在編譯程式碼

此 C# 範例需要:

命名空間

系統

System.Collections.Generic

System.Text

Microsoft.ConfigurationManagement.ManagementProvider

Microsoft.ConfigurationManagement.ManagementProvider.WqlQueryEngine

組件

microsoft.configurationmanagement.managementprovider

adminui.wqlqueryengine

健全的程式設計

如需錯誤處理的詳細資訊,請參閱關於 Configuration Manager 錯誤

.NET Framework 安全性

如需保護 Configuration Manager 應用程式的詳細資訊,請參閱 Configuration Manager 角色型系統管理

另請參閱

物件概觀 如何使用受控程序代碼如何使用WMI工作順序在 Configuration Manager 中聯機到SMS提供者概觀,以在Configuration Manager中新增作系統部署工作順序動作