1

ワークステーションでまったく問題なく動作する VBscript があります。SCCM にクエリを実行して、コンピューターがどのドメインに属しているかを調べます。タスク シーケンスの一部として実行すると、失敗します。これは、Windows PE ではなく Windows 7 では、タスク シーケンスのほぼ最後の手順であることに注意してください。

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

タスク シーケンスを実行するコマンド プロンプトを開き (Windows PE ではなく Windows 7 で F8 キーを使用)、スクリプトを実行すると、次のようになります。

SWbemLocator: アクセスが拒否されました

行で:

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

何かご意見は?または、コンピューターが最後に構築されたときにどのドメインにあったかを調べる方法について、他に提案はありますか?

4

2 に答える 2

1

タスク シーケンスはローカル システム アカウントのコンテキストで実行され、既定では、このアカウントには SCCM での権限がありません。

SCCM 管理コンソール、セキュリティ権限、ユーザーで「yourdomain\domain コンピューター」を定義し、コレクションに対する読み取りおよび読み取りリソース権限を与えると、SCCM サーバーに接続できるようになります。

接続するすべてのサイト サーバーでこれを行う必要があることに注意してください。これらの定義はサイト間で複製されません。

于 2011-11-22T10:17:56.923 に答える