Verbinding maken met een SMS-provider in Configuration Manager met behulp van WMI
Voordat u verbinding maakt met de SMS-provider voor een lokale of externe Configuration Manager siteserver, moet u eerst de SMS-provider voor de siteserver zoeken. De SMS-provider kan lokaal of extern zijn naar de Configuration Manager siteserver die u gebruikt. De WMI-klasse SMS_ProviderLocation
(Windows Management Instrumentation) is aanwezig op alle Configuration Manager siteservers en één exemplaar bevat de locatie voor de Configuration Manager siteserver die u gebruikt.
U kunt verbinding maken met de SMS-provider op een Configuration Manager siteserver met behulp van het WMI SWbemLocator-object of met behulp van de Methode Windows Script HostGetObject
. Beide benaderingen werken even goed voor lokale of externe verbindingen, met de volgende beperkingen:
U moet gebruiken
SWbemLocator
als u gebruikersreferenties wilt doorgeven aan een externe computer.U kunt niet gebruiken
SWbemLocator
om gebruikersreferenties expliciet door te geven aan een lokale computer.Er zijn verschillende syntaxisen die u kunt gebruiken om de verbinding te maken, afhankelijk van of de verbinding lokaal of extern is. Nadat u bent verbonden met de SMS-provider, hebt u een SWbemServices-object dat u gebruikt om toegang te krijgen tot Configuration Manager objecten.
Opmerking
Als u contextkwalificaties voor de verbinding wilt toevoegen, raadpleegt u How to Add a Configuration Manager Context Qualifier by Using WMI (Een Configuration Manager contextkwalificatie toevoegen met behulp van WMI).
Verbinding maken met een sms-provider
Haal een WbemScripting.SWbemLocator-object op.
Stel het verificatieniveau in op pakketprivacy.
Stel een verbinding met de SMS-provider in met behulp van de methode SWbemLocator-objectConnectServer . Geef alleen referenties op als het een externe computer is.
Maak met behulp van de eigenschap SMS_ProviderLocation object ProviderForLocalSite verbinding met de SMS-provider voor de lokale computer en ontvang een SWbemServices-object.
Gebruik het SWbemServices-object om toegang te krijgen tot providerobjecten. Zie Overzicht van objecten voor meer informatie.
Voorbeelden
In het volgende voorbeeld wordt verbinding gemaakt met de server. Vervolgens wordt geprobeerd verbinding te maken met de SMS-provider voor die server. Meestal is dit dezelfde computer. Als dat niet zo is, geeft SMS_ProviderLocation de juiste computernaam op.
Zie Aanroepen Configuration Manager codefragmenten voor meer informatie over het aanroepen van de voorbeeldcode.
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
Het volgende voorbeeld maakt verbinding met de externe server via PowerShell en probeert een sms-verbinding te maken.
$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)
De code compileren
Voor dit C#-voorbeeld is het volgende vereist:
Opmerkingen
De voorbeeldmethode heeft de volgende parameters:
Parameter | Type | Omschrijving |
---|---|---|
connection |
-Beheerd: WqlConnectionManager - VBScript: SWbemServices |
|
Een geldige verbinding met de SMS-provider. | ||
taskSequence |
-Beheerd: IResultObject -Vbscript: SWbemObject |
Een geldige takenreeks (SMS_TaskSequence). |
taskSequenceXML |
-Beheerd: String -Vbscript: String |
Een geldige takenreeks-XML. |
Robuust programmeren
Zie Over Configuration Manager fouten voor meer informatie over foutafhandeling.
.NET Framework Beveiliging
Het gebruik van een script om de gebruikersnaam en het wachtwoord door te geven is een beveiligingsrisico en moet waar mogelijk worden vermeden.
In het voorgaande voorbeeld wordt de verificatie ingesteld op pakketprivacy. Dit is dezelfde beheerde SMS-provider.
Zie Configuration Manager op rollen gebaseerd beheer voor meer informatie over het beveiligen van Configuration Manager toepassingen.
Zie ook
Basisprincipes van SMS-provider
Een Configuration Manager contextkwalificatie toevoegen met behulp van WMI
Windows Management Instrumentation