Herstellen einer Verbindung mit einem SMS-Anbieter in Configuration Manager mithilfe von WMI
Bevor Sie eine Verbindung mit dem SMS-Anbieter für einen lokalen oder Remote-Configuration Manager Standortserver herstellen, müssen Sie zuerst den SMS-Anbieter für den Standortserver suchen. Der SMS-Anbieter kann entweder lokal oder remote zu dem Configuration Manager Standortserver sein, den Sie verwenden. Die WMI-Klasse SMS_ProviderLocation
(Windows Management Instrumentation) ist auf allen Configuration Manager Standortservern vorhanden, und eine Instanz enthält den Speicherort für den Configuration Manager Standortserver, den Sie verwenden.
Sie können eine Verbindung mit dem SMS-Anbieter auf einem Configuration Manager Standortserver herstellen, indem Sie das WMI-SWbemLocator-Objekt oder die Windows Script Host-Methode GetObject
verwenden. Beide Ansätze funktionieren bei lokalen oder Remoteverbindungen mit den folgenden Einschränkungen gleichermaßen gut:
Sie müssen verwenden
SWbemLocator
, wenn Sie Benutzeranmeldeinformationen an einen Remotecomputer übergeben müssen.Sie können nicht verwenden
SWbemLocator
, um Benutzeranmeldeinformationen explizit an einen lokalen Computer zu übergeben.Es gibt verschiedene Syntaxen, die Sie zum Herstellen der Verbindung verwenden können, je nachdem, ob die Verbindung lokal oder remote ist. Nachdem Sie mit dem SMS-Anbieter verbunden sind, verfügen Sie über ein SWbemServices-Objekt, das Sie für den Zugriff auf Configuration Manager Objekte verwenden.
Hinweis
Wenn Sie Kontextqualifizierer für die Verbindung hinzufügen müssen, finden Sie weitere Informationen unter Hinzufügen eines Configuration Manager Kontextqualifizierers mithilfe von WMI.
So stellen Sie eine Verbindung mit einem SMS-Anbieter her
Rufen Sie ein WbemScripting.SWbemLocator-Objekt ab.
Legen Sie die Authentifizierungsebene auf Paketdatenschutz fest.
Richten Sie mithilfe der ConnectServer-Methode des SWbemLocator-Objekts eine Verbindung mit dem SMS-Anbieter ein. Geben Sie nur Anmeldeinformationen an, wenn es sich um einen Remotecomputer handelt.
Stellen Sie mithilfe der SMS_ProviderLocationProviderForLocalSite-Eigenschaft eine Verbindung mit dem SMS-Anbieter für den lokalen Computer her, und empfangen Sie ein SWbemServices-Objekt.
Verwenden Sie das SWbemServices-Objekt , um auf Anbieterobjekte zuzugreifen. Weitere Informationen finden Sie unter Übersicht über Objekte.
Beispiele
Im folgenden Beispiel wird eine Verbindung mit dem Server hergestellt. Anschließend wird versucht, eine Verbindung mit dem SMS-Anbieter für diesen Server herzustellen. In der Regel ist dies derselbe Computer. Andernfalls stellt SMS_ProviderLocation den richtigen Computernamen bereit.
Informationen zum Aufrufen des Beispielcodes finden Sie unter Aufrufen von Configuration Manager Codeausschnitten.
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, do 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
Im folgenden Beispiel wird mithilfe von PowerShell eine Verbindung mit dem Remoteserver hergestellt, und es wird versucht, eine SMS-Verbindung herzustellen.
$siteCode = ''
$siteServer = 'server.domain'
$credentials = Get-Credential
$username = $credentials.UserName
# The connector does not understand a PSCredential. The following command will pull your PSCredential password into a string.
$password = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto([System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($credentials.Password))
$NameSpace = "root\sms\site_$siteCode"
$SWbemLocator = New-Object -ComObject "WbemScripting.SWbemLocator"
$SWbemLocator.Security_.AuthenticationLevel = 6
$connection = $SWbemLocator.ConnectServer($siteServer,$Namespace,$username,$password)
Kompilieren des Codes
Für dieses C#-Beispiel ist Folgendes erforderlich:
Kommentare
Die Beispielmethode verfügt über die folgenden Parameter:
Parameter | Typ | Beschreibung |
---|---|---|
connection |
-Verwalteten: WqlConnectionManager – VBScript: SWbemServices |
|
Eine gültige Verbindung mit dem SMS-Anbieter. | ||
taskSequence |
-Verwalteten: IResultObject -Vbscript: SWbemObject |
Eine gültige Tasksequenz (SMS_TaskSequence). |
taskSequenceXML |
-Verwalteten: String -Vbscript: String |
Eine gültige Tasksequenz-XML. |
Robuste Programmierung
Weitere Informationen zur Fehlerbehandlung finden Sie unter Informationen zu Configuration Manager Fehlern.
.NET Framework-Sicherheit
Die Verwendung eines Skripts zum Übergeben von Benutzername und Kennwort ist ein Sicherheitsrisiko und sollte nach Möglichkeit vermieden werden.
Im vorherigen Beispiel wird die Authentifizierung auf Paketdatenschutz festgelegt. Dies ist derselbe verwaltete SMS-Anbieter.
Weitere Informationen zum Schützen Configuration Manager Anwendungen finden Sie unter Configuration Manager rollenbasierte Verwaltung.
Siehe auch
Grundlagen des SMS-Anbieters
Hinzufügen eines Configuration Manager Kontextqualifizierers mithilfe von WMI
Windows Windows-Verwaltungsinstrumentation