Jak nawiązać połączenie z dostawcą programu SMS w Configuration Manager przy użyciu usługi WMI
Przed nawiązaniem połączenia z dostawcą programu SMS dla lokalnego lub zdalnego serwera Configuration Manager lokacji należy najpierw zlokalizować dostawcę programu SMS dla serwera lokacji. Dostawca programu SMS może być lokalny lub zdalny na serwerze lokacji Configuration Manager, z której korzystasz. Klasa SMS_ProviderLocation
Instrumentacja zarządzania windows (WMI) jest obecna na wszystkich serwerach Configuration Manager lokacji, a jedno wystąpienie będzie zawierać lokalizację używanego serwera lokacji Configuration Manager.
Możesz nawiązać połączenie z dostawcą programu SMS na serwerze lokacji Configuration Manager przy użyciu obiektu SWbemLocator usługi WMI lub metody Host GetObject
skryptu systemu Windows. Oba podejścia działają równie dobrze w przypadku połączeń lokalnych lub zdalnych z następującymi ograniczeniami:
Należy użyć,
SWbemLocator
jeśli musisz przekazać poświadczenia użytkownika do komputera zdalnego.Nie można używać do
SWbemLocator
jawnego przekazywania poświadczeń użytkownika do komputera lokalnego.Istnieje kilka różnych składni, których można użyć do nawiązania połączenia, w zależności od tego, czy połączenie jest lokalne, czy zdalne. Po nawiązaniu połączenia z dostawcą programu SMS będziesz mieć obiekt SWbemServices używany do uzyskiwania dostępu do obiektów Configuration Manager.
Uwaga
Jeśli chcesz dodać kwalifikatory kontekstu dla połączenia, zobacz How to Add a Configuration Manager Context Qualifier by Using WMI (Jak dodać kwalifikator kontekstu Configuration Manager przy użyciu usługi WMI).
Aby nawiązać połączenie z dostawcą programu SMS
Pobierz obiekt WbemScripting.SWbemLocator .
Ustaw poziom uwierzytelniania na prywatność pakietów.
Skonfiguruj połączenie z dostawcą programu SMS przy użyciu metody ConnectServer obiektu SWbemLocator. Podaj poświadczenia tylko wtedy, gdy jest to komputer zdalny.
Za pomocą SMS_ProviderLocation właściwośćProviderForLocalSite połącz się z dostawcą programu SMS dla komputera lokalnego i odbierz obiekt SWbemServices.
Użyj obiektu SWbemServices , aby uzyskać dostęp do obiektów dostawcy. Aby uzyskać więcej informacji, zobacz Omówienie obiektów.
Przykłady
Poniższy przykład łączy się z serwerem. Następnie próbuje nawiązać połączenie z dostawcą programu SMS dla tego serwera. Zazwyczaj będzie to ten sam komputer. Jeśli tak nie jest, SMS_ProviderLocation podaje poprawną nazwę komputera.
Aby uzyskać informacje na temat wywoływania przykładowego kodu, zobacz Wywoływanie fragmentów kodu Configuration Manager.
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
Poniższy przykład nawiązuje połączenie z serwerem zdalnym przy użyciu programu PowerShell i próbuje nawiązać połączenie sms.
$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)
Kompilowanie kodu
Ten przykład języka C# wymaga:
Komentarze
Przykładowa metoda ma następujące parametry:
Parametr | Wpisać | Opis |
---|---|---|
connection |
-Zarządzane: WqlConnectionManager - VBScript: SWbemServices |
|
Prawidłowe połączenie z dostawcą programu SMS. | ||
taskSequence |
-Zarządzane: IResultObject -Vbscript: SWbemObject |
Prawidłowa sekwencja zadań (SMS_TaskSequence). |
taskSequenceXML |
-Zarządzane: String -Vbscript: String |
Prawidłowy kod XML sekwencji zadań. |
Niezawodne programowanie
Aby uzyskać więcej informacji na temat obsługi błędów, zobacz Informacje o błędach Configuration Manager.
zabezpieczenia .NET Framework
Użycie skryptu do przekazania nazwy użytkownika i hasła stanowi zagrożenie dla bezpieczeństwa i należy unikać go tam, gdzie to możliwe.
Powyższy przykład ustawia uwierzytelnianie na prywatność pakietów. Jest to ten sam zarządzany dostawca programu SMS.
Aby uzyskać więcej informacji na temat zabezpieczania aplikacji Configuration Manager, zobacz Configuration Manager administracja oparta na rolach.
Zobacz też
Podstawy dostawcy programu SMS
Jak dodać kwalifikator kontekstu Configuration Manager przy użyciu usługi WMI
Instrumentacja zarządzania systemem Windows