Запрос SCCM из последовательности задач — возможно ли это?

У меня есть VBscript, который отлично работает на моей рабочей станции. Он запрашивает SCCM, чтобы узнать, в каком домене находится компьютер. Когда я запускаю его как часть последовательности задач, происходит сбой. Обратите внимание, что это почти последний шаг в последовательности задач в Windows 7, а не в Windows PE.

Option Explicit

Const wbemFlagReturnImmediately = &H10
Const wbemFlagForwardOnly = &H20

Dim computerName, userName, userPassword, server
Dim swbemLocator, swbemServices, providerLoc
Dim location, connection
Dim query, found, resource, resources

'--- Settings ---
userName = "domain\username"
userPassword = "password"
server = "domain.com"  

'--- Get computer name ---
computerName = CreateObject("WScript.Network").ComputerName
WScript.Echo"Computer name: " & computerName

'--- Connect ----
Set swbemLocator = CreateObject("WbemScripting.SWbemLocator")
swbemLocator.Security_.AuthenticationLevel = 6
Set swbemServices = swbemLocator.ConnectServer(server, "root\sms",userName,userPassword)
Set providerLoc = swbemServices.InstancesOf("SMS_ProviderLocation")
For Each location In providerLoc
    If location.ProviderForLocalSite = True Then
        WScript.Echo "SiteCode: " & location.SiteCode       
        Set connection = swbemLocator.ConnectServer(server, "root\sms\site_" + location.SiteCode)
    Else
        WScript.Echo "Not provider for local site."
    End If
Next

'--- Query & output ---
query = "SELECT * FROM SMS_FullCollectionMembership WHERE name = '" & computerName & "'"
Set resources = connection.ExecQuery(query, , wbemFlagForwardOnly Or wbemFlagReturnImmediately)
found = False
For Each resource In resources
    WScript.Echo "Domain: " & resource.Domain & " (" & resource.CollectionID & ")"
    found = True
    Exit For
Next
If Not found Then WScript.Echo "Computer not found!"

Если я открою командную строку, запустив последовательность задач (используя F8 под Windows 7, а не Windows PE) и запущу скрипт, я получу:

SWbemLocator: Доступ запрещен

на линии:

Set connection = swbemLocator.ConnectServer(server, "root\sms\site_" + location.SiteCode)

Есть предположения? В качестве альтернативы, какие-либо другие предложения о том, как узнать, в каком домене находился компьютер в последний раз, когда он был создан?


person rd1966    schedule 28.07.2011    source источник


Ответы (2)


Ваша последовательность задач выполняется в контексте учетной записи локальной системы, и по умолчанию эта учетная запись не имеет прав в SCCM.

Если вы определите «ваш домен\компьютеры домена» в консоли администрирования SCCM, правах безопасности, пользователях и предоставите им права на чтение и чтение ресурсов в коллекции, вы сможете подключиться к серверу SCCM.

Обратите внимание, что вы должны сделать это на всех серверах сайта, к которым вы хотите подключиться, эти определения не реплицируются между сайтами.

person Bent Buhl    schedule 22.11.2011

Я понимаю, что это очень старый пост, но у меня только что была эта проблема. У вас уже есть имя пользователя и пароль в скрипте, и они используются здесь

Set swbemServices = swbemLocator.ConnectServer(server, "root\sms",userName,userPassword)

Однако чуть дальше вы подключаетесь к сайту без имени пользователя и пароля.

Set connection = swbemLocator.ConnectServer(server, "root\sms\site_" + location.SiteCode)

Попробуй это:

Set connection = swbemLocator.ConnectServer(server, "root\sms\site_" + location.SiteCode, userName, userPassword)

Надеюсь, это поможет кому-то!

person Brett Montgomery    schedule 04.12.2013