Delen via


Statusberichten User-Defined lezen

In Configuration Manager kunt u door de gebruiker gedefinieerde statusberichten op de siteserver lezen door een query uit te voeren op de SMS-provider.

Door de gebruiker gedefinieerde statusberichten lezen

  1. Een verbinding met de SMS-provider instellen. Zie Basisprincipes van SMS-provider voor meer informatie.

  2. Voer een query uit op de provider voor de sms-exemplaren_StatusMessage die u wilt gebruiken. Haal als onderdeel van de query de invoegtekenreekswaarden op uit SMS_SMS_StatMsgInStrings en de kenmerkwaarde van SMS_StatMsgAttributes.

Voorbeeld

In het volgende voorbeeld worden statusberichten voor foutberichten gelezen voor het voorbeeld dat is gemaakt in How to Report User-Defined Status Messages Using WMI (Statusberichten rapporteren met behulp van WMI). Zorg ervoor dat de MyPackageID waarden en MyApplication in de query in beide voorbeelden overeenkomen.

Zie Aanroepen Configuration Manager codefragmenten voor meer informatie over het aanroepen van de voorbeeldcode.

Sub ReadErrorStatusMesage(connection)

    Dim queryWQL
    Dim message
    Dim messageSet
    Dim statusMessage
    Dim insertionString
    Dim attributes

    queryWQL = "SELECT b.Component, b.MachineName, b.MessageType, b.MessageID, " & _
            "       c.InsStrValue, d.AttributeValue " & _
            "FROM SMS_StatusMessage b " & _
            "     JOIN SMS_StatMsgInsStrings c ON b.RecordID = c.RecordID " & _
            "     JOIN SMS_StatMsgAttributes d ON c.RecordID = d.RecordID " & _
            "WHERE b.Component = 'MyApplication' " & _
            "AND   d.AttributeID = 400 " & _
            "AND   d.AttributeValue = 'MyPackageID' "

    Set messageSet = connection.ExecQuery(queryWQL)

    For Each message in messageSet

        ' Get the message objects.
        statusMessage = message.Properties_.Item("b")
        insertionString = message.Properties_.Item("c")
        attributes = message.Properties_.Item("d")

        ' Display the message details.
        WScript.Echo "Message: " + insertionString.Properties_.Item("insstrvalue")
        WScript.Echo "Component: " + statusMessage.Properties_.Item("Component")
        WScript.Echo "Computer: " + statusMessage.Properties_.Item("MachineName")
        WScript.Echo "MessageID: " + Cstr(statusMessage.Properties_.Item("MessageID"))
        WScript.Echo attributes.Properties_.Item("attributevalue")
        WScript.Echo

    Next

 End Sub

public void ReadErrorStatusMessage(WqlConnectionManager connection)
{
    try
    {
        string queryWQL = "SELECT b.Component, b.MachineName, " +
                "       b.MessageType, b.MessageID, " +
                "       c.insstrvalue, d.attributevalue " +
                "FROM SMS_StatusMessage b " +
                "     JOIN SMS_StatMsgInsStrings c ON b.RecordID = c.RecordID " +
                "     JOIN SMS_StatMsgAttributes d ON c.RecordID = d.RecordID " +
                "WHERE b.Component = \"MyApplication\" " +
                "AND   d.AttributeID = 400 " +
                "AND   d.AttributeValue = \"MyPackageID\" ";

        IResultObject query = connection.QueryProcessor.ExecuteQuery(queryWQL);
        foreach (IResultObject o in query)
        {

            ManagementBaseObject  statusMessage = (ManagementBaseObject)o["b"].ObjectValue;
            ManagementBaseObject insertionString = (ManagementBaseObject)o["c"].ObjectValue;
            ManagementBaseObject attributes = (ManagementBaseObject)o["d"].ObjectValue;

            Console.WriteLine("Message: " + insertionString["insstrvalue"]);
            Console.WriteLine("Component: " + statusMessage["Component"]);
            Console.WriteLine("Computer: " + statusMessage["MachineName"]);
            Console.WriteLine("MessageID: " + statusMessage["MessageID"]);
            Console.WriteLine(attributes["attributevalue"]);
            Console.WriteLine();
        }
    }
    catch (SmsException ex)
    {
        Console.WriteLine("Failed to read status message: ", ex.Message);
        throw;
    }
}

De voorbeeldmethode heeft de volgende parameters:

Parameter Type Beschrijving
connection - Beheerd: WqlConnectionManager
- VBScript: SWbemServices
Een geldige verbinding met de SMS-provider. Zie Basisprincipes van SMS-provider voor meer informatie.

De code compileren

Voor dit C#-voorbeeld is het volgende vereist:

Naamruimten

Systeem

System.Collections.Generic

System.Text

System.Management

Microsoft.ConfigurationManagement.ManagementProvider

Microsoft.ConfigurationManagement.ManagementProvider.WqlQueryEngine

Vergadering

adminui.wqlqueryengine

microsoft.configurationmanagement.managementprovider

System.Management

Robuust programmeren

Zie Over Configuration Manager fouten voor meer informatie over foutafhandeling.

.NET Framework Beveiliging

Zie Configuration Manager op rollen gebaseerd beheer voor meer informatie over het beveiligen van Configuration Manager toepassingen.

Zie ook

Over Configuration Manager statusberichten StatusberichtenRapporteren User-Defined statusberichtenSMS_StatusMessage server WMI-klasseStatusberichten verwijderen