2011-07-28 3 views
1

내 워크 스테이션에서 abcultultly 잘 작동하는 VBscript가 있습니다. SCCM을 쿼리하여 컴퓨터가있는 도메인을 찾습니다. 작업 시퀀스의 일부로 실행하면 SCCM이 실패합니다. 이것은 Windows PE가 아닌 Windows 7에서 작업 순서의 마지막 단계입니다. 내가 명령 (윈도우 7이 아닌 윈도우 PE에서 F8을 사용) 작업 시퀀스를 후회하고 신속하고 스크립트를 실행을 열면작업 시퀀스에서 SCCM 쿼리 - 가능합니까?

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!" 

, 내가 얻을 :

SWbemLocator은 : 액세스가 거부되었습니다

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

어떤 생각 : 라인에

? 컴퓨터가 지난 번에 만들어 졌던 도메인을 확인하는 방법에 대한 다른 제안이 있습니까?

답변

1

작업 시퀀스는 로컬 시스템 계정의 컨텍스트에서 실행되며 기본적으로이 계정은 SCCM에 대한 권한이 없습니다.

SCCM 관리 콘솔, 보안 권한, 사용자에서 "yourdomain \ domain computers"를 정의하고 Collection에 대한 읽기 및 읽기 리소스 권한을 부여하면 SCCM 서버에 연결할 수 있어야합니다.

연결하려는 모든 사이트 서버에서이 작업을 수행해야하며,이 정의는 사이트간에 복제되지 않습니다.

0

나는 이것이 매우 오래된 게시물이라는 것을 알고 있지만 나는이 문제를 직접 가지고있다. 이미 스크립트의 사용자 이름과 암호를 사용하고 여기

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) 

희망이 누군가를하는 데 도움이!

관련 문제