Share via


針對驗證輸入參數時常見的錯誤進行疑難解答

本文說明驗證輸入參數時可能發生的錯誤,以及如何加以解決。

如果您在建立內部部署參數時遇到問題,請使用 此腳本 來取得協助。

此腳本的設計目的是協助針對內部部署參數建立的相關問題進行疑難解答和解決。 存取文稿並利用其功能來解決您在建立內部部署參數期間可能會遇到的任何困難。

請遵循下列步驟來執行文稿:

  1. 下載文本,並使用 -Help 選項執行腳本以取得參數。
  2. 使用網域認證登入已加入網域的計算機。 計算機必須位於用於 SCOM 受控執行個體 的網域中。 登入之後,請使用指定的參數執行腳本。
  3. 如果有任何驗證失敗,請依照腳本建議採取更正動作,然後重新執行腳本,直到通過所有驗證為止。
  4. 一旦所有驗證都成功,請使用腳本中使用的相同參數來建立實例。

驗證檢查和詳細數據

驗證 Description
Azure 輸入驗證檢查
在測試計算機上設定必要條件 1.安裝 AD PowerShell 模組。
2. 安裝 群組原則 PowerShell 模組。
網際網路連線 檢查測試伺服器上是否有輸出因特網連線能力。
SQL MI 連線能力 檢查所提供 SQL MI 是否可從建立測試伺服器的網路上連線。
DNS 伺服器連線能力 檢查提供的 DNS 伺服器 IP 是否可連線並解析為有效的 DNS 伺服器。
網域連線能力 檢查提供的功能變數名稱是否可連線並解析為有效的網域。
網域加入驗證 使用提供的 OU 路徑和網域認證,檢查網域加入是否成功。
靜態IP和LB FQDN 關聯 根據提供的 DNS 名稱,檢查是否已針對提供的靜態 IP 建立 DNS 記錄。
計算機群組驗證 檢查提供的計算機群組是否由提供的網域使用者管理,而且管理員可以更新群組成員資格。
gMSA 帳戶驗證 檢查提供的 gMSA:
- 已啟用。
- 其 DNS 主機名設定為 LB 提供的 DNS 名稱。
- 具有 SAM 帳戶名稱長度為 15 個字元或更少。
- 已設定正確的 SPN。
密碼可由所提供計算機群組的成員擷取。
組策略驗證 檢查網域 (或 OU 路徑,其裝載管理伺服器) 是否受到任何組策略影響,這會改變本機 Administrators 群組。
驗證後清除 從網域取消加入。

執行驗證腳本的一般指導方針

在上線程序期間,會在驗證階段/索引標籤上執行驗證。如果所有驗證都成功,您可以繼續進行建立 SCOM 受控執行個體 的最後一個階段。 不過,如果有任何驗證失敗,您就無法繼續進行建立。

如果多個驗證失敗,最佳方法是在測試計算機上手動執行 驗證腳本 ,一次解決所有問題。

重要

一開始,在針對 SCOM 受控執行個體 建立的相同子網中,建立新的測試 Windows Server (2022/2019) 虛擬機 () VM。 接著,您的 AD 系統管理員和網路管理員都可以個別利用此 VM 來驗證其個別變更的有效性。 這種方法可大幅節省AD系統管理員與網路管理員之間往返通訊所花費的時間。

請遵循下列步驟來執行驗證文稿:

  1. 在所選子網內,在SCOM 受控執行個體建立的子網內,產生在 Windows Server 2022 或 2019 上執行的新 (虛擬機) 。 登入 VM,並將其 DNS 伺服器設定為使用在建立 SCOM 受控執行個體 期間所使用的相同 DNS IP。 例如,請參閱下列內容:

    屬性的螢幕擷取畫面。

  2. 將驗證腳本下載至測試 VM 並擷取。 其中包含五個檔案:

    • ScomValidation.ps1
    • RunValidationAsSCOMAdmin.ps1
    • RunValidationAsActiveDirectoryAdmin.ps1
    • RunValidationAsNetworkAdmin.ps1
    • Readme.txt
  3. 請遵循 Readme.txt 檔案中所述的步驟來執行 RunValidationAsSCOMAdmin.ps1。 在執行之前,請務必先以適用的值填入 RunValidationAsSCOMAdmin.ps1 中的設定值。

    # $settings = @{
    #   Configuration = @{
    #         DomainName="test.com"                 
    #         OuPath= "DC=test,DC=com"           
    #         DNSServerIP = "190.36.1.55"           
    #         UserName="test\testuser"              
    #         Password = "password"                 
    #         SqlDatabaseInstance= "test-sqlmi-instance.023a29518976.database.windows.net" 
    #         ManagementServerGroupName= "ComputerMSG"      
    #         GmsaAccount= "test\testgMSA$"
    #         DnsName= "lbdsnname.test.com"
    #         LoadBalancerIP = "10.88.78.200"
    #     }
    # }
    # Note : Before running this script, please make sure you have provided all the parameters in the settings
    $settings = @{
    Configuration = @{
    DomainName="<domain name>"
    OuPath= "<OU path>"
    DNSServerIP = "<DNS server IP>"
    UserName="<domain user name>"
    Password = "<domain user password>"
    SqlDatabaseInstance= "<SQL MI Host name>"
    ManagementServerGroupName= "<Computer Management server group name>"
    GmsaAccount= "<GMSA account>"
    DnsName= "<DNS name associated with the load balancer IP address>"
    LoadBalancerIP = "<Load balancer IP address>"
    }
    }
    
  4. 一般而言, RunValidationAsSCOMAdmin.ps1 會執行所有驗證。 如果您想要執行特定檢查,請開啟 ScomValidation.ps1 ,並批注檔案結尾的所有其他檢查。 您也可以在特定檢查中新增斷點,以偵錯檢查並進一步了解問題。

        # Default mode is - SCOMAdmin, by default if mode is not passed then it will run all the validations  

    # adding all the checks to result set 

    try { 

        # Connectivity checks 

        $validationResults += Invoke-ValidateStorageConnectivity $settings 

        $results = ConvertTo-Json $validationResults -Compress 

         

        $validationResults += Invoke-ValidateSQLConnectivity $settings 

        $results = ConvertTo-Json $validationResults -Compress 

 

        $validationResults += Invoke-ValidateDnsIpAddress $settings 

        $results = ConvertTo-Json $validationResults -Compress 

 

        $validationResults += Invoke-ValidateDomainControllerConnectivity $settings 

        $results = ConvertTo-Json $validationResults -Compress 

 

        # Parameter validations 

        $validationResults += Invoke-ValidateDomainJoin $settings 

        $results = ConvertTo-Json $validationResults -Compress 

 

        $validationResults += Invoke-ValidateStaticIPAddressAndDnsname $settings 

        $results = ConvertTo-Json $validationResults -Compress 

 

        $validationResults += Invoke-ValidateComputerGroup $settings 

        $results = ConvertTo-Json $validationResults -Compress 

 

        $validationResults += Invoke-ValidategMSAAccount $settings 

        $results = ConvertTo-Json $validationResults -Compress 

             

        $validationResults += Invoke-ValidateLocalAdminOverideByGPO $settings 

        $results = ConvertTo-Json $validationResults -Compress 

    } 

    catch { 

        Write-Verbose -Verbose  $_ 

    } 
  1. 驗證文本會顯示所有驗證檢查及其各自的錯誤,有助於解決驗證問題。 若要快速解決,請使用斷點在PowerShell ISE中執行腳本,以加速偵錯程式。

    如果所有檢查都順利通過,請返回上線頁面,然後再次重新啟動上線程式。

網際網路連線

問題:測試伺服器上不存在輸出因特網連線能力

原因: 發生於不正確的 DNS 伺服器 IP 或不正確的網路設定。

解決方法:

  1. 檢查 DNS 伺服器 IP,並確定 DNS 伺服器已啟動並執行。
  2. 請確定用於 SCOM 受控執行個體 建立的 VNet 能夠看見 DNS 伺服器。

問題:無法連線到記憶體帳戶以下載 SCOM 受控執行個體 產品位

原因: 發生於因特網連線問題。

解析度:確認用於 SCOM 受控執行個體 建立的 VNet 具有輸出因特網存取權,方法是在與 SCOM 相同的子網上建立測試虛擬機 受控執行個體,並測試來自測試虛擬機的輸出連線。

問題:因特網連線測試失敗。 無法從 VNet 連線到必要的端點

原因:發生於不正確的 DNS 伺服器 IP 或不正確的網路設定。

解決方案

  • 檢查 DNS 伺服器 IP,並確定 DNS 伺服器已啟動並執行。

  • 請確定用於 SCOM 受控執行個體 建立的 VNet 能夠看見 DNS 伺服器。

  • 請確定 SCOM 受控執行個體 具有輸出因特網存取權,且 NSG/防火牆已正確設定為允許存取所需的端點,如防火牆需求中所述。

因特網連線的一般疑難解答步驟

  1. 在所選子網內,產生新的虛擬機 (VM) 在所選子網內執行的 Windows Server 2022 或 2019,以建立 SCOM 受控執行個體。 登入 VM,並將其 DNS 伺服器設定為使用在建立 SCOM 受控執行個體 期間所使用的相同 DNS IP。

  2. 您可以遵循下列提供的逐步指示,或如果您熟悉 PowerShell,請在 ScomValidation.ps1 腳本中執行所呼叫Invoke-ValidateStorageConnectivity的特定檢查。 如需在測試計算機上獨立執行驗證腳本的詳細資訊,請參閱 執行驗證腳本的一般指導方針

  3. 以系統管理員模式開啟 PowerShell ISE,並將 Set-ExecutionPolicy 設定為 [不受限制]。

  4. 若要檢查因特網連線能力,請執行下列命令:

    Test-NetConnection www.microsoft.com -Port 80
    

    此命令會驗證埠 80 上 www.microsoft.com 的連線能力。 如果失敗,表示輸出因特網連線發生問題。

  5. 若要確認 DNS 設定,請執行下列命令:

    Get-DnsClientServerAddress
    

    此命令會擷取電腦上設定的 DNS 伺服器 IP 位址。 請確定 DNS 設定正確且可供存取。

  6. 若要檢查網路組態,請執行下列命令:

    Get-NetIPConfiguration
    

    此命令會顯示網路組態詳細數據。 確認網路設定正確無誤,並符合您的網路環境。

SQL MI 連線能力

問題:測試伺服器上沒有輸出因特網連線能力

原因: 發生於不正確的 DNS 伺服器 IP 或不正確的網路設定。

解決方法:

  1. 檢查 DNS 伺服器 IP,並確定 DNS 伺服器已啟動並執行。
  2. 請確定正用於 SCOM 受控執行個體 建立的 VNet 能夠看見 DNS 伺服器。

問題:無法在 SQL 受控實例上設定 MSI 的資料庫登入

原因:MSI 未正確設定為存取 SQL 受控實例時發生。

解決方案:檢查 MSI 是否已設定為 SQL 受控實例上的 Microsoft Entra 管理員。 請確定已將必要的 Microsoft Entra ID 許可權提供給 SQL 受控實例,MSI 驗證才能運作。

問題:無法從這個實例連線到 SQL MI

原因:發生於 SQL MI VNet 未委派或未正確與 SCOM 受控執行個體 VNet 對等互連時發生。

解決方法:

  1. 確認 SQL MI 已正確設定。
  2. 確定正用於 SCOM 受控執行個體 建立的 VNet,可以透過位於相同的 VNet 或 VNet 對等互連,來看見 SQL MI。

SQL MI 連線的一般疑難解答步驟

  1. 在 SCOM 受控執行個體 建立所選子網內,在 Windows Server 2022 或 2019 上執行的新虛擬機 (VM) 。 登入 VM,並將其 DNS 伺服器設定為使用在建立 SCOM 受控執行個體 期間所使用的相同 DNS IP。

  2. 您可以遵循下面提供的逐步指示,或如果您熟悉 PowerShell,請在 ScomValidation.ps1 腳本中執行所呼叫Invoke-ValidateSQLConnectivity的特定檢查。 如需在測試計算機上獨立執行驗證腳本的詳細資訊,請參閱 執行驗證腳本的一般指導方針

  3. 以系統管理員模式開啟 PowerShell ISE,並將 Set-ExecutionPolicy 設定為 [不受限制]。

  4. 若要檢查輸出因特網連線能力,請執行下列命令:

    Test-NetConnection -ComputerName "www.microsoft.com" -Port 80
    

    此命令會嘗試在埠 80 上建立 與 www.microsoft.com 的連線,以驗證輸出因特網連線能力。 如果連線失敗,表示因特網連線的潛在問題。

  5. 若要驗證 DNS 設定和網路組態,請確定已正確設定 DNS 伺服器 IP 位址,並在執行驗證的電腦上驗證網路組態設定。

  6. 若要測試 SQL MI 連線,請執行下列命令:

    Test-NetConnection -ComputerName $sqlMiName -Port 1433
    

    將取代 $sqlMiName 為 SQL MI 主機名的名稱。

    此命令會測試 SQL MI 實例的連線。 如果連線成功,表示 SQL MI 可連線。

DNS 伺服器連線能力

問題: (DNS IP) <提供的 DNS IP> 不正確,或無法連線到 DNS 伺服器

解析度: 檢查 DNS 伺服器 IP,並確定 DNS 伺服器已啟動並執行。

DNS 伺服器連線的一般疑難解答

  1. 在 SCOM 受控執行個體 建立所選子網內,在 Windows Server 2022 或 2019 上執行的新虛擬機 (VM) 。 登入 VM,並將其 DNS 伺服器設定為使用在建立 SCOM 受控執行個體 期間所使用的相同 DNS IP。

  2. 您可以遵循下面提供的逐步指示,或如果您熟悉 PowerShell,請在 ScomValidation.ps1 腳本中執行所呼叫Invoke-ValidateDnsIpAddress的特定檢查。 如需在測試計算機上獨立執行驗證腳本的詳細資訊,請參閱 執行驗證腳本的一般指導方針

  3. 以系統管理員模式開啟 PowerShell ISE,並將 Set-ExecutionPolicy 設定為 [不受限制]。

  4. 若要檢查指定 IP 位址的 DNS 解析,請執行下列命令:

    Resolve-DnsName -Name $ipAddress -IssueAction SilentlyContinue
    

    將取代 $ipAddress 為您想要驗證的IP位址。

    此命令會檢查所提供IP位址的 DNS 解析。 如果命令未傳回任何結果或擲回錯誤,表示 DNS 解析的潛在問題。

  5. 若要確認 IP 位址的網路連線能力,請執行下列命令:

    Test-NetConnection -ComputerName $ipAddress -Port 80
    

    將取代 $ipAddress 為您想要測試的IP位址。

    此命令會檢查埠 80 上指定IP位址的網路連線能力。 如果連線失敗,則建議網路連線問題。

網域連線能力

問題:無法從此網路連線到功能變數名稱<>的域控制器,或至少一個域控制器上未開啟埠

原因: 由於提供的 DNS 伺服器 IP 或網路組態發生問題。

解決方法:

  1. 檢查 DNS 伺服器 IP,並確定 DNS 伺服器已啟動並執行。
  2. 請確定已正確將功能變數名稱解析導向至針對 Azure 或 SCOM 受控執行個體 設定的指定域控制器 (DC) 。 確認此 DC 列在已解析 DC 的頂端。 如果解析導向至不同的DC伺服器,表示AD網域解析有問題。
  3. 檢查功能變數名稱,並確定已啟動並執行 Azure 和 SCOM 受控執行個體 的域控制器設定。

    注意

    埠 9389、389/636、88、3268/3269、135、445 應該在設定為 Azure 或 SCOM 受控執行個體 的 DC 上開啟,且 DC 上的所有服務都應該正在執行。

網域連線的一般疑難解答步驟

  1. 在 SCOM 受控執行個體 建立所選子網內,在 Windows Server 2022 或 2019 上執行的新虛擬機 (VM) 。 登入 VM,並將其 DNS 伺服器設定為使用在建立 SCOM 受控執行個體 期間所使用的相同 DNS IP。

  2. 您可以遵循下面提供的逐步指示,或如果您熟悉 PowerShell,請在 ScomValidation.ps1 腳本中執行所呼叫Invoke-ValidateDomainControllerConnectivity的特定檢查。 如需在測試計算機上獨立執行驗證腳本的詳細資訊,請參閱 執行驗證腳本的一般指導方針

  3. 以系統管理員模式開啟 PowerShell ISE,並將 Set-ExecutionPolicy 設定為 [不受限制]。

  4. 若要檢查域控制器的連線能力,請執行下列命令:

    Resolve-DnsName -Name $domainName 
    

    將取代 $domainName 為您要測試的功能變數名稱。

    請確定已正確將功能變數名稱解析導向至針對 Azure 或 SCOM 受控執行個體 設定的指定域控制器 (DC) 。 確認此 DC 列在已解析 DC 的頂端。 如果解析導向至不同的DC伺服器,表示AD網域解析有問題。

  5. 若要驗證 DNS 伺服器設定:

    • 請確定已正確設定執行驗證之電腦上的 DNS 伺服器設定。
    • 確認 DNS 伺服器 IP 位址是否正確且可存取。
  6. 若要驗證網路組態:

    • 確認正在執行驗證之電腦上的網路組態設定。
    • 請確定計算機已連線到正確的網路,並具有與域控制器通訊所需的網路設定。
  7. 若要在域控制器上測試所需的埠,請執行下列命令:

    Test-NetConnection -ComputerName $domainName -Port $portToCheck
    

    $domainName取代為您要測試的網域名稱,並以$portToCheck下列清單編號中的每個連接埠取代 :

    • 389/636
    • 88
    • 3268/3269
    • 135
    • 445

    針對上述所有埠執行提供的命令。

    此命令會檢查指定的埠是否已在針對 Azure 或 SCOM 受控執行個體 建立所設定的指定域控制器上開啟。 如果命令顯示成功的連線,表示必要的埠已開啟。

網域加入驗證

問題:測試管理伺服器無法加入網域

原因: 發生的原因是不正確的 OU 路徑、不正確的認證或網路連線問題。

解決方法:

  1. 檢查金鑰保存庫中建立的認證。 使用者名稱和密碼密碼必須反映正確的用戶名稱,且用戶名稱值的格式必須是 domain\username 和 password,其具有將電腦加入網域的許可權。 根據預設,用戶帳戶最多只能將10部電腦新增至網域。 若要設定,請參閱 使用者可以加入網域的工作站時的預設限制數目
  2. 確認 OU 路徑正確無誤,且不會封鎖新電腦加入網域。

網域加入驗證的一般疑難解答步驟

  1. 在 SCOM 受控執行個體 建立所選子網內,在 Windows Server 2022 或 2019 上執行的新虛擬機 (VM) 。 登入 VM,並將其 DNS 伺服器設定為使用在建立 SCOM 受控執行個體 期間所使用的相同 DNS IP。

  2. 您可以遵循下列提供的逐步指示,或如果您熟悉 PowerShell,請在 ScomValidation.ps1 腳本中執行所呼叫Invoke-ValidateDomainJoin的特定檢查。 如需在測試計算機上獨立執行驗證腳本的詳細資訊,請參閱 執行驗證腳本的一般指導方針

  3. 以系統管理員模式開啟 PowerShell ISE,並將 Set-ExecutionPolicy 設定為 [不受限制]。

  4. 使用 SCOM 受控執行個體 建立中使用的網域帳戶,將 VM 加入網域。 若要使用認證將網域加入計算機,請執行下列命令:

    
    $domainName = "<domainname>"
    
    
    $domainJoinCredentials = New-Object pscredential -ArgumentList ("<username>", (ConvertTo-SecureString "password" -AsPlainText -Force))
    
    
    
    $ouPath = "<OU path>"
    if (![String]::IsNullOrWhiteSpace($ouPath)) {
    $domainJoinResult = Add-Computer -DomainName $domainName -Credential $domainJoinCredentials -OUPath $ouPath -Force -WarningAction SilentlyContinue -ErrorAction SilentlyContinue
    }
    else {
    $domainJoinResult = Add-Computer -DomainName $domainName -Credential $domainJoinCredentials -Force -WarningAction SilentlyContinue -ErrorAction SilentlyContinue
    }   
    

    以正確的值取代使用者名稱、密碼、$domainName$ouPath。

    執行上述命令之後,請執行下列命令來檢查電腦是否已成功加入網域:

    Get-WmiObject -Class Win32_ComputerSystem | Select-Object -ExpandProperty PartOfDomain
    

靜態IP和LB FQDN 關聯

問題:無法執行測試,因為伺服器無法加入網域

解析度: 確定機器可以加入網域。 請遵循網域 加入驗證一節中的疑難解答步驟。

問題:無法解析 DNS 名稱 <DNS 名稱>

解析度: 提供的 DNS 名稱不存在於 DNS 記錄中。 檢查 DNS 名稱,並確定它與提供的靜態 IP 正確相關聯。

問題:提供的靜態IP靜態IP <> 和 Load Balancer DNS <DNS 名稱>不相符

解析度: 檢查 DNS 記錄,並提供正確的 DNS 名稱/靜態 IP 組合。 如需詳細資訊,請參閱 建立靜態IP並設定 DNS 名稱

靜態IP和LB FQDN關聯的一般疑難解答步驟

  1. 在所選子網內產生新的虛擬機 (VM) 在所選子網內執行的 Windows Server 2022 或 2019,以進行 SCOM 受控執行個體 建立。 登入 VM,並將其 DNS 伺服器設定為使用在建立 SCOM 受控執行個體 期間所使用的相同 DNS IP。

  2. 您可以遵循下列提供的逐步指示,或如果您熟悉 PowerShell,請在 ScomValidation.ps1 腳本中執行所呼叫Invoke-ValidateStaticIPAddressAndDnsname的特定檢查。 如需在測試計算機上獨立執行驗證腳本的詳細資訊,請參閱 執行驗證腳本的一般指導方針

  3. 以系統管理員模式開啟 PowerShell ISE,並將 Set-ExecutionPolicy 設定為 [不受限制]。

  4. 使用 SCOM 受控執行個體 建立中使用的網域帳戶,將虛擬機加入網域。 若要將虛擬機加入網域,請遵循網域 加入驗證一節中提供的步驟。

  5. 取得IP位址和相關聯的 DNS 名稱,然後執行下列命令以查看它們是否符合。 解析 DNS 名稱並擷取實際的IP位址:

    $DNSRecord = Resolve-DnsName -Name $DNSName
    $ActualIP = $DNSRecord.IPAddress
    

    如果無法解析 DNS 名稱,請確定 DNS 名稱有效且與實際 IP 位址相關聯。

計算機群組驗證

問題:無法執行測試,因為伺服器無法加入網域

解析度: 確定機器可以加入網域。 請遵循網域 加入驗證一節中指定的疑難解答步驟。

問題:網域中找不到名稱為計算機組名<>的計算機群組

解析度: 確認群組是否存在,並在尚未建立時檢查提供的名稱,或建立新的名稱。

問題:輸入計算機群組<計算機組名不是由使用者網域用戶<名稱>管理>

解析度: 流覽至群組屬性,並將此用戶設定為管理員。 如需詳細資訊,請參閱 建立和設定計算機群組

問題:輸入計算機群組<計算機組名的管理員<網域用戶>名稱>沒有管理群組成員資格的必要許可權

解析度: 流覽至 [ 群組屬性 ],然後核取 [ 管理可以更新成員資格清單 ] 複選框。 如需詳細資訊,請參閱 建立和設定計算機群組

計算機群組驗證的一般疑難解答步驟

  1. 在所選子網內產生新的虛擬機 (VM) 在所選子網內執行的 Windows Server 2022 或 2019,以進行 SCOM 受控執行個體 建立。 登入 VM,並將其 DNS 伺服器設定為使用在建立 SCOM 受控執行個體 期間所使用的相同 DNS IP。

  2. 您可以遵循下列提供的逐步指示,或如果您熟悉 PowerShell,請在 ScomValidation.ps1 腳本中執行所呼叫Invoke-ValidateComputerGroup的特定檢查。 如需在測試計算機上獨立執行驗證腳本的詳細資訊,請參閱 執行驗證腳本的一般指導方針

  3. 使用 SCOM 受控執行個體 建立中使用的網域帳戶,將 VM 加入網域。 若要將虛擬機加入網域,請遵循網域 加入驗證一節中提供的步驟。

  4. 以系統管理員模式開啟 PowerShell ISE,並將 Set-ExecutionPolicy 設定為 [不受限制]。

  5. 執行下列命令以匯入模組:

    Add-WindowsFeature RSAT-AD-PowerShell -ErrorAction SilentlyContinue
    Add-WindowsFeature GPMC -ErrorAction SilentlyContinue
    
  6. 若要確認 VM 是否已加入網域,請執行下列命令:

    Get-WmiObject -Class Win32_ComputerSystem | Select-Object -ExpandProperty PartOfDomain
    
  7. 若要確認網域是否存在,以及目前計算機是否已加入網域,請執行下列命令:

    $domainJoinCredentials = New-Object pscredential -ArgumentList ("<username>", (ConvertTo-SecureString "password" -AsPlainText -Force)) 
    $Domain = Get-ADDomain -Current LocalComputer -Credential $domainUserCredentials
    

    password將取代$username為適用的值。

  8. 若要確認網域中是否有使用者,請執行下列命令:

    $DomainUser = Get-ADUser -Identity $username -Credential $domainUserCredentials
    

    $domainUserCredentials將取代$username為適用的值

  9. 若要確認網域中計算機群組是否存在,請執行下列命令:

    $ComputerGroup = Get-ADGroup -Identity $computerGroupName -Properties ManagedBy,DistinguishedName -Credential $domainUserCredentials
    

    $domainUserCredentials將取代$computerGroupName為適用的值。

  10. 如果使用者和計算機群組存在,請判斷使用者是否為計算機群組的管理員。

    Import-Module ActiveDirectory
      	$DomainDN = $Domain.DistinguishedName
      $GroupDN = $ComputerGroup.DistinguishedName
     $RightsGuid = [GUID](Get-ItemProperty "AD:\CN=Self-Membership,CN=Extended-Rights,CN=Configuration,$DomainDN" -Name rightsGuid -Credential $domainUserCredentials | Select-Object -ExpandProperty rightsGuid)
    
      # Run Get ACL under the give credentials
      $job = Start-Job -ScriptBlock {
          param (
              [Parameter(Mandatory = $true)]
              [string] $GroupDN,
              [Parameter(Mandatory = $true)]
              [GUID] $RightsGuid
          )
    
      Import-Module ActiveDirectory
      $AclRule = (Get-Acl -Path "AD:\$GroupDN").GetAccessRules($true,$true,[System.Security.Principal.SecurityIdentifier]) |  Where-Object {($_.ObjectType -eq $RightsGuid) -and ($_.ActiveDirectoryRights -like '*WriteProperty*')}
          return $AclRule
    
      } -ArgumentList $GroupDN, $RightsGuid -Credential $domainUserCredentials
    
      $timeoutSeconds = 20
      $jobResult = Wait-Job $job -Timeout $timeoutSeconds
    
      # Job did not complete within the timeout
      if ($null -eq $jobResult) {
          Write-Host "Checking permissions, timeout after 10 seconds."
          Remove-Job $job -Force
      } else {
          # Job completed within the timeout
          $AclRule = Receive-Job $job
          Remove-Job $job -Force
      }
    
      $managerCanUpdateMembership = $false
      if (($null -ne $AclRule) -and ($AclRule.AccessControlType -eq 'Allow') -and ($AclRule.IdentityReference -eq $DomainUser.SID)) {
          $managerCanUpdateMembership = $true
    
    

    如果 為 managerCanUpdateMembershipTrue,則網域使用者具有計算機群組的更新成員資格許可權。 如果 managerCanUpdateMembershipFalse,則授與計算機群組管理網域用戶的許可權。

gMSA 帳戶驗證

問題:測試不會執行,因為伺服器無法加入網域

解析度: 確定機器可以加入網域。 請遵循網域 加入驗證一節中指定的疑難解答步驟。

問題:網域中找不到名稱為計算機組名<>的計算機群組。 此群組的成員必須能夠擷取 gMSA 密碼

解析度: 確認群組是否存在,並檢查提供的名稱。

問題:網域中找不到名稱<為 gMSA 的 gMSA>

解析度: 確認 gMSA 帳戶是否存在,並在尚未建立名稱時檢查提供的名稱,或建立新的帳戶。

問題:gMSA <網域 gMSA> 未啟用

解析度: 使用下列命令加以啟用:

Set-ADServiceAccount -Identity <domain gMSA> -Enabled $true

問題:gMSA <網域 gMSA> 必須將其 DNS 主機名設定為 <DNS 名稱>

解析度: gMSA 未 DNSHostName 正確設定 屬性。 DNSHostName使用下列命令設定 屬性:

Set-ADServiceAccount -Identity <domain gMSA> -DNSHostName <DNS Name>

問題:gMSA <網域 gMSA> 的 Sam 帳戶名稱超過 15 個字元的限制

解析度:SamAccountName使用下列指令設定 :

Set-ADServiceAccount -Identity <domain gMSA> -SamAccountName <shortname$>

問題:計算機群組 <計算機組名> 必須設定為 gMSA 網域 gMSA <的 PrincipalsAllowedToRetrieveManagedPassword>

解析度: gMSA 未 PrincipalsAllowedToRetrieveManagedPassword 正確設定。 PrincipalsAllowedToRetrieveManagedPassword使用下列指令設定 :

Set-ADServiceAccount -Identity <domain gMSA> - PrincipalsAllowedToRetrieveManagedPassword <computer group name>

問題:尚未針對 gMSA <網域 gMSA 正確設定 SPN>

解析度: gMSA 未設定正確的服務主體名稱。 使用下列命令設定服務主體名稱:

Set-ADServiceAccount -Identity <domain gMSA> -ServicePrincipalNames <set of SPNs>

gMSA 帳戶驗證的一般疑難解答步驟

  1. 在所選子網內產生新的虛擬機 (VM) 在所選子網內執行的 Windows Server 2022 或 2019,以進行 SCOM 受控執行個體 建立。 登入 VM,並將其 DNS 伺服器設定為使用在建立 SCOM 受控執行個體 期間所使用的相同 DNS IP。

  2. 您可以遵循下列提供的逐步指示,或如果您熟悉 PowerShell,請在 ScomValidation.ps1 腳本中執行所呼叫Invoke-ValidategMSAAccount的特定檢查。 如需在測試計算機上獨立執行驗證腳本的詳細資訊,請參閱 執行驗證腳本的一般指導方針

  3. 使用 SCOM 受控執行個體 建立中使用的網域帳戶,將 VM 加入網域。 若要將虛擬機加入網域,請遵循網域 加入驗證一節中提供的步驟。

  4. 以系統管理員模式開啟 PowerShell ISE,並將 Set-ExecutionPolicy 設定為 [不受限制]。

  5. 執行下列命令以匯入模組:

    Add-WindowsFeature RSAT-AD-PowerShell -ErrorAction SilentlyContinue
    Add-WindowsFeature GPMC -ErrorAction SilentlyContinue
    
  6. 若要確認伺服器已成功加入網域,請執行下列命令:

    (Get-WmiObject -Class Win32_ComputerSystem).PartOfDomain
    
  7. 若要檢查電腦群組是否存在,請執行下列命令:

    $Credentials = New-Object pscredential -ArgumentList ("<username>", (ConvertTo-SecureString "password" -AsPlainText -Force))
    $adGroup = Get-ADGroup -Identity $computerGroupName -Properties ManagedBy,DistinguishedName -Credential $Credentials
    

    以適用的值取代 username、password 和 computerGroupName。

  8. 若要檢查 gMSA 帳戶是否存在,請執行下列命令:

    $adServiceAccount = Get-ADServiceAccount -Identity gMSAAccountName -Properties DNSHostName,Enabled,PrincipalsAllowedToRetrieveManagedPassword,SamAccountName,ServicePrincipalNames -Credential $Credentials
    
  9. 若要驗證 gMSA 帳戶屬性,請檢查 gMSA 帳戶是否已啟用:

    (Get-ADServiceAccount -Identity <GmsaAccount>).Enabled
    

    如果命令傳回 False,請在網域中啟用帳戶。

  10. 若要確認 gMSA 帳戶的 DNS 主機名符合提供的 DNS 名稱 (LB DNS 名稱) ,請執行下列命令:

    (Get-ADServiceAccount -Identity <GmsaAccount>).DNSHostName
    

    如果命令未傳回預期的 DNS 名稱,請將 gMsaAccount 的 DNS 主機名更新為 LB DNS 名稱。

  11. 確定 gMSA 帳戶的 Sam 帳戶名稱未超過 15 個字元的限制:

    (Get-ADServiceAccount -Identity <GmsaAccount>).SamAccountName.Length
    
  12. 若要驗證 PrincipalsAllowedToRetrieveManagedPassword 屬性,請執行下列命令:

    檢查指定的計算機群組是否設定為 gMSA 帳戶的 'PrincipalsAllowedToRetrieveManagedPassword'':

    (Get-ADServiceAccount -Identity <GmsaAccount>).PrincipalsAllowedToRetrieveManagedPassword -contains (Get-ADGroup -Identity <ComputerGroupName>).DistinguishedName
    

    將和 ComputerGroupName 取代gMSAAccount為適用的值。

  13. 若要驗證 gMSA 帳戶的服務主體名稱 (SPN) ,請執行下列命令:

    $CorrectSPNs = @("MSOMSdkSvc/$dnsHostName", "MSOMSdkSvc/$dnsName", "MSOMHSvc/$dnsHostName", "MSOMHSvc/$dnsName")
    (Get-ADServiceAccount -Identity <GmsaAccount>).ServicePrincipalNames
    

    檢查結果是否有正確的SPN。 以 SCOM 受控執行個體 建立中指定的 LB DNS 名稱取代 $dnsName 。 以 LB DNS 簡短名稱取代 $dnsHostName 。 例如:MSOMHSvc/ContosoLB.domain.com、MSOMHSvc/ContosoLB、MSOMSdkSvc/ContosoLB.domain.com 和 MSOMSdkSvc/ContosoLB 是服務主體名稱。

組策略驗證

重要

若要修正 GPO 原則,請與您的 Active Directory 系統管理員共同作業,並從下列原則中排除 System Center Operations Manager:

  • 修改或覆寫本機系統管理員群組設定的 GPO。
  • 停用網路驗證的 GPO。
  • 評估 GPO,以模擬本機系統管理員的遠端登錄。

問題:無法執行此測試,因為伺服器無法加入網域

解析度: 確定機器加入網域。 請遵循網域 加入驗證一節中的疑難解答步驟。

問題:網域中找不到名稱 <為 gMSA 的 gMSA> 。 此帳戶必須是伺服器上的本機系統管理員

解析度: 確認帳戶是否存在,並確定 gMSA 和網域使用者是本機系統管理員群組的一部分。

問題:帳戶 <網域用戶> 名稱和 <網域 gMSA> 無法新增至測試管理伺服器上的本機 Administrators 群組,或在組策略更新之後未保存在群組中

解析度: 請確定提供的網域用戶名稱和 gMSA 輸入正確,包括功能變數名稱 (網域\帳戶) 。 也請檢查測試計算機上是否有任何組策略覆寫本機 Administrators 群組,因為原則是在 OU 或網域層級建立。 gMSA 和網域用戶必須是本機系統管理員群組的一部分,SCOM 受控執行個體 才能運作。 SCOM 受控執行個體 計算機必須從覆寫本機系統管理員群組的任何原則中排除, (使用 AD 系統管理員) 。

問題:SCOM 受控執行個體 失敗

原因: 網域中的組策略 (名稱: <組策略名稱>) 會在包含伺服器或網域根的 OU 上覆寫測試管理伺服器上的本機 Administrators 群組。

解析度:確定 SCOM 受控執行個體 管理伺服器的 OU (<OU 路徑>) 不會受到任何原則覆寫群組的影響。

組策略驗證的一般疑難解答步驟

  1. 在所選子網內產生新的虛擬機 (VM) 在所選子網內執行的 Windows Server 2022 或 2019,以建立 SCOM 受控執行個體。 登入 VM,並將其 DNS 伺服器設定為使用在建立 SCOM 受控執行個體 期間所使用的相同 DNS IP。

  2. 您可以遵循下列提供的逐步指示,或如果您熟悉 PowerShell,請在 ScomValidation.ps1 腳本中執行所呼叫Invoke-ValidateLocalAdminOverideByGPO的特定檢查。 如需在測試計算機上獨立執行驗證腳本的詳細資訊,請參閱 執行驗證腳本的一般指導方針

  3. 使用 SCOM 受控執行個體 建立中使用的網域帳戶,將 VM 加入網域。 若要將虛擬機加入網域,請遵循網域 加入驗證一節中提供的步驟。

  4. 以系統管理員模式開啟 PowerShell ISE,並將 Set-ExecutionPolicy 設定為 [不受限制]。

  5. 執行下列命令以匯入模組:

    Add-WindowsFeature RSAT-AD-PowerShell -ErrorAction SilentlyContinue
    Add-WindowsFeature GPMC -ErrorAction SilentlyContinue
    
  6. 若要確認伺服器是否已成功加入網域,請執行下列命令:

    (Get-WmiObject -Class Win32_ComputerSystem).PartOfDomain
    

    命令必須傳回 True

  7. 若要檢查 gMSA 帳戶是否存在,請執行下列命令:

    Get-ADServiceAccount -Identity <GmsaAccount>
    
  8. 若要驗證本機 Administrators 群組中是否有用戶帳戶,請執行下列命令:

    $domainJoinCredentials = New-Object pscredential -ArgumentList ("<username>", (ConvertTo-SecureString "password" -AsPlainText -Force)) 
    $addToAdminResult = Add-LocalGroupMember -Group "Administrators" -Member $userName, $gMSAccount -ErrorAction SilentlyContinue 
    $gpUpdateResult = gpupdate /force 
    $LocalAdmins = Get-LocalGroupMember -Group 'Administrators' | Select-Object -ExpandProperty Name
    

    <UserName>將和 <GmsaAccount> 取代為實際值。

  9. 若要判斷網域和組織單位 (OU) 詳細數據,請執行下列命令:

    Get-ADOrganizationalUnit -Filter "DistinguishedName -like '$ouPathDN'" -Properties CanonicalName -Credential $domainUserCredentials
    

    以 <實際的 OU 路徑取代 OuPathDN> 。

  10. 若要從網域取得 GPO (群組原則 物件) 報告,並檢查本機 Administrators 群組上的覆寫原則,請執行下列命令:

     [xml]$gpoReport = Get-GPOReport -All -ReportType Xml -Domain <domain name>
     foreach ($GPO in $gpoReport.GPOS.GPO) {
         # Check if the GPO links to the entire domain, or the input OU if provided
         if (($GPO.LinksTo.SOMPath -eq $domainName) -or ($GPO.LinksTo.SOMPath -eq $ouPathCN)) {
             # Check if there is a policy overriding the Local Users and Groups
             if ($GPO.Computer.ExtensionData.Extension.LocalUsersAndGroups.Group) {
             $GroupPolicy = $GPO.Computer.ExtensionData.Extension.LocalUsersAndGroups.Group | Select-Object @{Name='RemoveUsers';Expression={$_.Properties.deleteAllUsers}},@{Name='RemoveGroups';Expression={$_.Properties.deleteAllGroups}},@{Name='GroupName';Expression={$_.Properties.groupName}}
             # Check if the policy is acting on the BUILTIN\Administrators group, and whether it is removing other users or groups
             if (($GroupPolicy.groupName -eq "Administrators (built-in)") -and (($GroupPolicy.RemoveUsers -eq 1) -or ($GroupPolicy.RemoveGroups -eq 1))) {
              $overridingPolicyFound = $true
              $overridingPolicyName = $GPO.Name
                 }
             }
         }
     }
     if($overridingPolicyFound) {
      Write-Warning "Validation failed. A group policy in your domain (name: $overridingPolicyName) is overriding the local Administrators group on this machine. This will cause SCOM MI installation to fail. Please ensure that the OU for SCOM MI Management Servers is not affected by this policy"
     }
     else {
      Write-Output "Validation suceeded. No group policy found in your domain which overrides local Administrators. "
     }
    

如果腳本執行會以 驗證失敗的形式提供警告,則原則 (名稱,如覆寫本機系統管理員群組的警告訊息) 所示。 請洽詢 Active Directory 系統管理員,並從原則中排除 System Center Operations Manager 管理伺服器。