Wywoływanie fragmentów kodu Configuration Manager
Poniższe przykłady kodu pokazują, jak skonfigurować kod wywołujący dla przykładów kodu używanych w zestawie Configuration Manager Software Development Kit (SDK).
Zastąp fragment kodu SNIPPETMETHOD fragmentem kodu, który chcesz uruchomić. W większości przypadków należy wprowadzić zmiany, takie jak dodawanie parametrów, aby kod działał.
Aby uzyskać więcej informacji na temat zdalnych połączeń instrumentacji zarządzania windows (WMI), zobacz Nawiązywanie połączenia z usługą WMI na komputerze zdalnym.
Przykład
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;
}
}
}
Kompilowanie kodu
Obszary nazw
System
Microsoft. ConfigurationManagement.ManagementProvider
Microsoft. ConfigurationManagement.ManagementProvider.WqlQueryEngine
Zestawu
adminui.wqlqueryengine
microsoft.configurationmanagement.managementprovider
Uwaga
Zestawy znajdują się w folderze <Program Files>\Microsoft Endpoint Manager\AdminConsole\bin.
Wymagania dotyczące środowiska uruchomieniowego
Aby uzyskać więcej informacji, zobacz wymagania dotyczące środowiska uruchomieniowego serwera Configuration Manager.
Niezawodne programowanie
Wyjątki Configuration Manager, które można zgłaszać, to SmsConnectionException i SmsQueryException. Można je złapać razem z programem SmsException.