调用Configuration Manager代码片段

以下代码示例演示如何为整个Configuration Manager软件开发工具包 (SDK) 中使用的代码示例设置调用代码。

将 SNIPPETMETHOD 代码片段替换为要运行的代码片段。 在大多数情况下,需要进行更改(例如添加参数),以使代码正常工作。

有关远程 Windows Management Instrumentation (WMI) 连接的详细信息,请参阅 连接到远程计算机上的 WMI

示例

Dim connection
Dim computer
Dim userName
Dim userPassword
Dim password 'Password object

Wscript.StdOut.Write "Computer you want to connect to (Enter . for local): "
computer = WScript.StdIn.ReadLine

If computer = "." Then
    userName = ""
    userPassword = ""
Else
    Wscript.StdOut.Write "Please enter the user name: "
    userName = WScript.StdIn.ReadLine

    Set password = CreateObject("ScriptPW.Password")
    WScript.StdOut.Write "Please enter your password:"
    userPassword = password.GetPassword()
End If

Set connection = Connect(computer,userName,userPassword)

If Err.Number<>0 Then
    Wscript.Echo "Call to connect failed"
End If

Call SNIPPETMETHODNAME (connection)

Sub SNIPPETMETHODNAME(connection)
   ' Insert snippet code here.
End Sub

Function Connect(server, userName, userPassword)

    On Error Resume Next

    Dim net
    Dim localConnection
    Dim swbemLocator
    Dim swbemServices
    Dim providerLoc
    Dim ___location

    Set swbemLocator = CreateObject("WbemScripting.SWbemLocator")

    swbemLocator.Security_.AuthenticationLevel = 6 'Packet Privacy

    ' If  the server is local, don not supply credentials.
    Set net = CreateObject("WScript.NetWork")
    If UCase(net.ComputerName) = UCase(server) Then
        localConnection = true
        userName = ""
        userPassword = ""
        server = "."
    End If

    ' Connect to the server.
    Set swbemServices= swbemLocator.ConnectServer _
            (server, "root\sms",userName,userPassword)
    If Err.Number<>0 Then
        Wscript.Echo "Couldn't connect: " + Err.Description
        Connect = null
        Exit Function
    End If

    ' Determine where the provider is and connect.
    Set providerLoc = swbemServices.InstancesOf("SMS_ProviderLocation")

        For Each ___location In providerLoc
            If ___location.ProviderForLocalSite = True Then
                Set swbemServices = swbemLocator.ConnectServer _
                 (___location.Machine, "root\sms\site_" + _
                    ___location.SiteCode,userName,userPassword)
                If Err.Number<>0 Then
                    Wscript.Echo "Couldn't connect:" + Err.Description
                    Connect = Null
                    Exit Function
                End If
                Set Connect = swbemServices
                Exit Function
            End If
        Next
    Set Connect = null ' Failed to connect.
End Function

using System;
using System.Collections.Generic;
using System.Text;
using System.ComponentModel;
using Microsoft.ConfigurationManagement.ManagementProvider;
using Microsoft.ConfigurationManagement.ManagementProvider.WqlQueryEngine;

namespace ConfigurationManagerSnippets
{
    class Program
    {
        static void Main(string[] args)
        {
            // Setup snippet class.

            string computer = "";
            string userName = "";
            string password = "";

            SnippetClass snippets = new SnippetClass();

            Console.WriteLine("Computer you want to connect to (Enter . for local): ");
            computer = Console.ReadLine();
            Console.WriteLine();

            if (computer == ".")
            {
                computer = System.Net.Dns.GetHostName();
                userName = "";
                password = "";
            }
            else
            {
                Console.WriteLine("Please enter the user name: ");
                userName = Console.ReadLine();

                Console.WriteLine("Please enter your password:");
                password = snippets.ReturnPassword();
            }

            // Make connection to provider.
            WqlConnectionManager WMIConnection = snippets.Connect(computer, userName, password);

            // Call snippet function and pass the provider connection object.
            snippets.SNIPPETMETHODNAME(WMIConnection);
        }
    }

    class SnippetClass
    {
        public WqlConnectionManager Connect(string serverName, string userName, string userPassword)
        {
            try
            {
                SmsNamedValuesDictionary namedValues = new SmsNamedValuesDictionary();
                WqlConnectionManager connection = new WqlConnectionManager(namedValues);
                if (System.Net.Dns.GetHostName().ToUpper() == serverName.ToUpper())
                {
                    connection.Connect(serverName);
                }
                else
                {
                    connection.Connect(serverName, userName, userPassword);
                }
                return connection;
            }
            catch (SmsException ex)
            {
                Console.WriteLine("Failed to Connect. Error: " + ex.Message);
                return null;
            }
            catch (UnauthorizedAccessException ex)
            {
                Console.WriteLine("Failed to authenticate. Error:" + ex.Message);
                return null;
            }
        }

        public void SNIPPETMETHODNAME(WqlConnectionManager connection)
        {
            // Insert snippet code here.
        }

        public string ReturnPassword()
        {
            string password = "";
            ConsoleKeyInfo info = Console.ReadKey(true);
            while (info.Key != ConsoleKey.Enter)
            {
                if (info.Key != ConsoleKey.Backspace)
                {
                    password += info.KeyChar;
                    info = Console.ReadKey(true);
                }
                else if (info.Key == ConsoleKey.Backspace)
                {
                    if (!string.IsNullOrEmpty(password))
                    {
                        password = password.Substring
                        (0, password.Length - 1);
                    }
                    info = Console.ReadKey(true);
                }
            }
            for (int i = 0; i < password.Length; i++)
                Console.Write("*");
            return password;
        }
    }
}

编译代码

命名空间

系统警报

Microsoft.ConfigurationManagement.ManagementProvider

Microsoft.ConfigurationManagement.ManagementProvider.WqlQueryEngine

Assembly

adminui.wqlqueryengine

microsoft.configurationmanagement.managementprovider

注意

程序集位于 <Program Files>\Microsoft Endpoint Manager\AdminConsole\bin 文件夹中。

运行时要求

有关详细信息,请参阅Configuration Manager服务器运行时要求

可靠编程

可以引发Configuration Manager异常是 SmsConnectionExceptionSmsQueryException。 这些可与 SmsException 一起捕获。