針對驗證輸入參數時常見的錯誤進行疑難排解
本文描述驗證輸入參數時可能發生的錯誤,以及解決方法。
如果您在建立內部部署參數時遇到任何問題,請使用此指令碼取得協助。
此指令碼旨在協助針對內部部署參數建立的相關問題進行疑難排解並解決問題。 存取指令碼並利用其功能來解決您在建立內部部署參數時可能會遇到的任何困難。
請遵循下列步驟執行指令碼:
- 下載指令碼並使用 -Help 選項執行指令碼以取得參數。
- 使用網域認證登入已加入網域的電腦。 該電腦必須位於用於 SCOM 受控執行個體的網域中。 登入之後,請使用指定的參數執行指令碼。
- 如果任何驗證失敗,請依照指令碼的建議採取更正動作,然後重新執行指令碼,直到其通過所有驗證為止。
- 所有驗證皆成功後,請使用指令碼中使用之相同參數來建立執行個體。
驗證檢查和詳細資料
驗證 | 描述 |
---|---|
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 路徑) 是否受到任何群組原則的影響,這會改變本機系統管理員群組。 |
驗證後清除 | 從網域取消加入。 |
執行驗證指令碼的一般指導方針
在上線流程期間,會在驗證階段/分頁上執行驗證。如果所有驗證都成功,您可以繼續進行建立 SCOM 受控執行個體的最後階段。 然而,如果有任何驗證失敗,您就無法繼續進行建立。
如果有多個驗證失敗,最好的方法是手動執行測試電腦上的驗證指令碼,以一次解決所有問題。
重要
一開始,在為 SCOM 受控執行個體建立所選取的相同子網路中,建立新的測試 Windows Server (2022/2019) 虛擬機器 (VM)。 接著,您的 AD 系統管理員和網路管理員都可以單獨利用此 VM 來驗證其各自變更的有效性。 這種方法可大幅節省 AD 系統管理員與網路管理員之間來回通訊所花費的時間。
請遵循下列步驟驗證指令碼:
在建立 SCOM 受控執行個體所選擇的子網路內產生在 Windows Server 2022 或 2019 上執行的新虛擬機器 (VM)。 登入 VM,並將其 DNS 伺服器設定為使用建立 SCOM 受控執行個體期間所使用的相同 DNS IP。 請參閱下列範例:
將驗證指令碼下載至測試 VM 並解壓縮。 其中包含五個檔案:
- ScomValidation.ps1
- RunValidationAsSCOMAdmin.ps1
- RunValidationAsActiveDirectoryAdmin.ps1
- RunValidationAsNetworkAdmin.ps1
- Readme.txt
請依照 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>" } }
一般而言,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 $_
}
驗證指令碼會顯示所有驗證檢查及其各自的錯誤,這有助於解決驗證問題。 為了快速解析,請在 PowerShell ISE 中使用中斷點執行指令碼,以加速偵錯流程。
如果所有檢查都順利通過,請返回上線頁面,並重新啟動上線流程。
網際網路連線能力
問題:測試伺服器上不存在的輸出網際網路存取
原因: 由於 DNS 伺服器 IP 不正確或網路設定不正確而發生。
解決方法:
- 檢查 DNS 伺服器 IP,並確保 DNS 伺服器已啟動並執行。
- 請確保用於建立 SCOM 受控執行個體的 VNet 具有 DNS 伺服器的視線。
問題:無法連線至儲存體帳戶以下載 SCOM 受控執行個體產品 BITS
原因: 因為網際網路存取問題而發生。
解析: 透過在與 SCOM 受控執行個體相同的子網路上建立測試虛擬機器並測試來自測試虛擬機器的輸出連線能力,驗證用於建立 SCOM 受控執行個體的 VNet 是否具有輸出網際網路存取。
問題:網際網路存取測試失敗。 無法從 VNet 連線到必要端點
原因:由於 DNS 伺服器 IP 不正確或網路設定不正確而發生。
解決方法:
檢查 DNS 伺服器 IP,並確保 DNS 伺服器已啟動並執行。
請確保用於建立 SCOM 受控執行個體的 VNet 具有 DNS 伺服器的視線。
確定 SCOM 受控執行個體具有輸出網際網路存取權,且 NSG/防火牆已正確設定,允許存取必要端點,如防火牆需求所述。
網際網路存取的一般疑難排解步驟
在 SCOM 受控執行個體建立所選擇的子網路內產生在 Windows Server 2022 或 2019 上執行的新虛擬機器 (VM)。 登入 VM,並將其 DNS 伺服器設定為使用建立 SCOM 受控執行個體期間所使用的相同 DNS IP。
您可以遵循下列提供的逐步指示,或如果您熟悉 PowerShell,請在 ScomValidation.ps1 指令碼中執行稱為
Invoke-ValidateStorageConnectivity
的特定檢查。 如需在測試電腦上獨立執行驗證指令碼的詳細資訊,請參閱執行驗證指令碼的一般指導方針。在管理員模式中開啟 PowerShell ISE,並將 Set-ExecutionPolicy 設定為 Unrestricted。
若要檢查網際網路存取,請執行下列命令:
Test-NetConnection www.microsoft.com -Port 80
此命令會驗證連接埠 80 上 www.microsoft.com 的連線能力。 如果失敗,則表示輸出網際網路存取發生問題。
若要驗證 DNS 設定,請執行下列命令:
Get-DnsClientServerAddress
此命令會擷取電腦上設定的 DNS 伺服器 IP 位址。 請確保 DNS 設定正確且可供存取。
若要檢查網路設定,請執行下列命令:
Get-NetIPConfiguration
此命令會顯示網路設定詳細資料。 確認網路設定正確無誤,並符合您的網路環境。
SQL MI 連線能力
問題:測試伺服器上不存在的輸出網際網路存取
原因:由於 DNS 伺服器 IP 不正確或網路設定不正確而發生。
解決方法:
- 檢查 DNS 伺服器 IP,並確保 DNS 伺服器已啟動並執行。
- 請確保用於建立 SCOM 受控執行個體的 VNet 具有 DNS 伺服器的視線。
問題:無法在 SQL 受控執行個體上設定 MSI 的 DB 登入
原因:MSI 未正確設定以存取 SQL 受控執行個體時發生。
解析:檢查 MSI 是否設定為 SQL 受控執行個體上的 Microsoft Entra 系統管理員。 請確保向 SQL 受控執行個體提供所需的 Microsoft Entra ID 權限,以便 MSI 驗證發揮作用。
問題:無法從此執行個體連線至 SQL MI
原因: 因未委派 SQL MI VNet 或未與 SCOM 受控執行個體 VNet 正確對等互連而發生。
解決方法:
- 請驗證已正確設定 SQL MI。
- 請確保用於建立 SCOM 受控執行個體的 VNet 具有 SQL MI 的視線,方法是位於相同的 VNet 或 VNet 對等互連中。
SQL MI 連線能力的一般疑難排解步驟
在 SCOM 受控執行個體建立所選擇的子網路內產生在 Windows Server 2022 或 2019 上執行的新虛擬機器 (VM)。 登入 VM,並將其 DNS 伺服器設定為使用建立 SCOM 受控執行個體期間所使用的相同 DNS IP。
您可以遵循下列提供的逐步指示,或如果您熟悉 PowerShell,請在 ScomValidation.ps1 指令碼中執行稱為
Invoke-ValidateSQLConnectivity
的特定檢查。 如需在測試電腦上獨立執行驗證指令碼的詳細資訊,請參閱執行驗證指令碼的一般指導方針。在管理員模式中開啟 PowerShell ISE,並將 Set-ExecutionPolicy 設定為 Unrestricted。
若要檢查輸出網際網路存取,請執行下列命令:
Test-NetConnection -ComputerName "www.microsoft.com" -Port 80
此命令會嘗試在連接埠 80 上建立與 www.microsoft.com 的連線,以驗證輸出網際網路存取。 如果連線失敗,表示網際網路存取可能發生問題。
若要驗證 DNS 設定和網路設定,請確定 DNS 伺服器 IP 位址已正確設定,並在執行驗證的電腦上驗證網路設定。
若要測試 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 伺服器連線能力的一般疑難排解
在 SCOM 受控執行個體建立所選擇的子網路內產生在 Windows Server 2022 或 2019 上執行的新虛擬機器 (VM)。 登入 VM,並將其 DNS 伺服器設定為使用建立 SCOM 受控執行個體期間所使用的相同 DNS IP。
您可以遵循下列提供的逐步指示,或如果您熟悉 PowerShell,請在 ScomValidation.ps1 指令碼中執行稱為
Invoke-ValidateDnsIpAddress
的特定檢查。 如需在測試電腦上獨立執行驗證指令碼的詳細資訊,請參閱執行驗證指令碼的一般指導方針。在管理員模式中開啟 PowerShell ISE,並將 Set-ExecutionPolicy 設定為 Unrestricted。
若要檢查指定 IP 位址的 DNS 解析,請執行下列命令:
Resolve-DnsName -Name $ipAddress -IssueAction SilentlyContinue
將
$ipAddress
取代為您要驗證的 IP 位址。此命令會檢查所提供 IP 位址的 DNS 解析。 如果命令未傳回任何結果或擲回錯誤,則表示 DNS 解析的潛在問題。
若要驗證 IP 位址的網路連線能力,請執行下列命令:
Test-NetConnection -ComputerName $ipAddress -Port 80
將
$ipAddress
取代為您要測試的 IP 位址。此命令會檢查連接埠 80 上所指定 IP 位址的網路連線能力。 如果連線失敗,則會建議網路連線問題。
網域連線能力
問題:無法從此網路存取網域<網域名稱>的網域控制站,或至少一個網域控制站上的連接埠未開啟
原因: 因為提供的 DNS 伺服器 IP 或網路設定發生問題。
解決方法:
- 檢查 DNS 伺服器 IP,並確保 DNS 伺服器已啟動並執行。
- 確保網域名稱解析已正確導向至針對 Azure 或 SCOM 受控執行個體所設定的指定網域控制站 (DC)。 請確認此 DC 會列在解析的 DC 頂端。 如果解析導向至不同的 DC 伺服器,則表示 AD 網域解析發生問題。
- 檢查網域名稱,並確保已啟動並執行 Azure 和 SCOM 受控執行個體的網域控制站設定。
注意
連接埠 9389、389/636、88、3268/3269、135、445 應在針對 Azure 或 SCOM 受控執行個體設定的 DC 上開啟,且 DC 上的所有服務都應該執行。
網域連線能力的一般疑難排解步驟
在 SCOM 受控執行個體建立所選擇的子網路內產生在 Windows Server 2022 或 2019 上執行的新虛擬機器 (VM)。 登入 VM,並將其 DNS 伺服器設定為使用建立 SCOM 受控執行個體期間所使用的相同 DNS IP。
您可以遵循下列提供的逐步指示,或如果您熟悉 PowerShell,請在 ScomValidation.ps1 指令碼中執行稱為
Invoke-ValidateDomainControllerConnectivity
的特定檢查。 如需在測試電腦上獨立執行驗證指令碼的詳細資訊,請參閱執行驗證指令碼的一般指導方針。在管理員模式中開啟 PowerShell ISE,並將 Set-ExecutionPolicy 設定為 Unrestricted。
若要檢查網域控制站的連線能力,請執行下列命令:
Resolve-DnsName -Name $domainName
將
$domainName
取代為要測試的網域之名稱。確保網域名稱解析已正確導向至針對 Azure 或 SCOM 受控執行個體所設定的指定網域控制站 (DC)。 請確認此 DC 會列在解析的 DC 頂端。 如果解析導向至不同的 DC 伺服器,則表示 AD 網域解析發生問題。
若要驗證 DNS 伺服器設定:
- 請確保電腦上執行驗證的 DNS 伺服器設定已正確設定。
- 驗證 DNS 伺服器 IP 位址是否正確且可存取。
若要驗證網路設定:
- 驗證正在執行驗證之電腦上的網路設定。
- 確保電腦已連線至正確的網路,並具有與網域控制站通訊所需的網路設定。
若要在網域控制站上測試必要的連接埠,請執行下列命令:
Test-NetConnection -ComputerName $domainName -Port $portToCheck
將
$domainName
取代為您要測試之網域的名稱,並將$portToCheck
取代為下列清單編號中的每個連接埠:- 389/636
- 88
- 3268/3269
- 135
- 445
針對上述所有連接埠執行提供的命令。
此命令會檢查指定的連接埠是否在針對 Azure 或 SCOM 受控執行個體建立所設定的指定網域控制站上開啟。 如果命令顯示成功的連線,則表示必要的連接埠已開啟。
網域加入驗證
問題:測試管理伺服器無法加入網域
原因: 因為 OU 路徑不正確、認證不正確或網路連線問題而發生。
解決方法:
- 檢查金鑰保存庫中建立的認證。 使用者名稱和密碼祕密必須反映正確的使用者名稱,且使用者名稱值的格式必須是網域\使用者名稱和密碼,其具有將電腦加入網域的權限。 根據預設,使用者帳戶最多只能將 10 部電腦新增至網域。 若要設定,請參閱使用者可以加入網域之工作站的預設數量限制。
- 驗證 OU 路徑正確,且不會封鎖新電腦加入網域。
網域加入驗證的一般疑難排解步驟
在 SCOM 受控執行個體建立所選擇的子網路內產生在 Windows Server 2022 或 2019 上執行的新虛擬機器 (VM)。 登入 VM,並將其 DNS 伺服器設定為使用建立 SCOM 受控執行個體期間所使用的相同 DNS IP。
您可以遵循下列提供的逐步指示,或如果您熟悉 PowerShell,請在 ScomValidation.ps1 指令碼中執行稱為
Invoke-ValidateDomainJoin
的特定檢查。 如需在測試電腦上獨立執行驗證指令碼的詳細資訊,請參閱執行驗證指令碼的一般指導方針。在管理員模式中開啟 PowerShell ISE,並將 Set-ExecutionPolicy 設定為 Unrestricted。
使用 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 關聯的一般疑難排解步驟
在 SCOM 受控執行個體建立所選擇的子網路內產生在 Windows Server 2022 或 2019 上執行的新虛擬機器 (VM)。 登入 VM,並將其 DNS 伺服器設定為使用建立 SCOM 受控執行個體期間所使用的相同 DNS IP。
您可以遵循下列提供的逐步指示,或如果您熟悉 PowerShell,請在 ScomValidation.ps1 指令碼中執行稱為
Invoke-ValidateStaticIPAddressAndDnsname
的特定檢查。 如需在測試電腦上獨立執行驗證指令碼的詳細資訊,請參閱執行驗證指令碼的一般指導方針。在管理員模式中開啟 PowerShell ISE,並將 Set-ExecutionPolicy 設定為 Unrestricted。
使用 SCOM 受控執行個體建立中使用的網域帳戶,將虛擬機器加入網域。 若要將虛擬機器加入網域,請遵循網域加入驗證一節中提供的步驟。
取得 IP 位址及關聯的 DNS 名稱,並執行下列命令來查看它們是否符合。 解析 DNS 名稱並擷取實際的 IP 位址:
$DNSRecord = Resolve-DnsName -Name $DNSName $ActualIP = $DNSRecord.IPAddress
如果無法解析 DNS 名稱,請確保 DNS 名稱有效且與實際 IP 位址關聯。
電腦群組驗證
問題:無法執行測試,因為伺服器無法加入網域
解析: 請確保電腦可以加入網域。 請遵循網域加入驗證一節中所指定的疑難排解步驟。
問題:在網域中找不到名為<電腦群組名稱>的電腦群組
解析: 驗證群組是否存在,並在尚未建立時檢查提供的名稱,或建立新的名稱。
問題:輸入電腦群組<電腦群組名稱>不受使用者<網域使用者名稱>管理
解析: 瀏覽至群組屬性,並將此使用者設定為管理員。 如需詳細資訊,請參閱建立和設定電腦群組。
問題:輸入電腦群組<電腦群組名稱>的管理員<網域使用者名稱>沒有管理群組成員資格所需的權限
解析: 瀏覽至 [群組屬性],然後勾選 [管理可以更新成員資格清單] 核取方塊。 如需詳細資訊,請參閱建立和設定電腦群組。
電腦群組驗證的一般疑難排解步驟
在 SCOM 受控執行個體建立所選擇的子網路內產生在 Windows Server 2022 或 2019 上執行的新虛擬機器 (VM)。 登入 VM,並將其 DNS 伺服器設定為使用建立 SCOM 受控執行個體期間所使用的相同 DNS IP。
您可以遵循下列提供的逐步指示,或如果您熟悉 PowerShell,請在 ScomValidation.ps1 指令碼中執行稱為
Invoke-ValidateComputerGroup
的特定檢查。 如需在測試電腦上獨立執行驗證指令碼的詳細資訊,請參閱執行驗證指令碼的一般指導方針。使用 SCOM 受控執行個體建立中使用的網域帳戶,將 VM 加入網域。 若要將虛擬機器加入網域,請遵循網域加入驗證一節中提供的步驟。
在管理員模式中開啟 PowerShell ISE,並將 Set-ExecutionPolicy 設定為 Unrestricted。
執行下列命令以匯入模組:
Add-WindowsFeature RSAT-AD-PowerShell -ErrorAction SilentlyContinue Add-WindowsFeature GPMC -ErrorAction SilentlyContinue
若要驗證 VM 是否已加入網域,請執行下列命令:
Get-WmiObject -Class Win32_ComputerSystem | Select-Object -ExpandProperty PartOfDomain
若要驗證網域是否存在,以及目前的電腦是否已加入網域,請執行下列命令:
$domainJoinCredentials = New-Object pscredential -ArgumentList ("<username>", (ConvertTo-SecureString "password" -AsPlainText -Force)) $Domain = Get-ADDomain -Current LocalComputer -Credential $domainUserCredentials
以適用的值取代
$username
、password
。若要驗證網域中使用者是否存在,請執行下列命令:
$DomainUser = Get-ADUser -Identity $username -Credential $domainUserCredentials
以適用的值取代
$username
、$domainUserCredentials
若要驗證網域中電腦群組是否存在,請執行下列命令:
$ComputerGroup = Get-ADGroup -Identity $computerGroupName -Properties ManagedBy,DistinguishedName -Credential $domainUserCredentials
以適用的值取代
$computerGroupName
、$domainUserCredentials
。如果使用者和電腦群組存在,請判斷使用者是否為電腦群組的管理員。
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
如果
managerCanUpdateMembership
為 True,則網域使用者具有電腦群組的更新成員資格權限。 如果managerCanUpdateMembership
為 False,則為電腦群組授與網域使用者的管理權限。
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 帳戶驗證的一般疑難排解步驟
在 SCOM 受控執行個體建立所選擇的子網路內產生在 Windows Server 2022 或 2019 上執行的新虛擬機器 (VM)。 登入 VM,並將其 DNS 伺服器設定為使用建立 SCOM 受控執行個體期間所使用的相同 DNS IP。
您可以遵循下列提供的逐步指示,或如果您熟悉 PowerShell,請在 ScomValidation.ps1 指令碼中執行稱為
Invoke-ValidategMSAAccount
的特定檢查。 如需在測試電腦上獨立執行驗證指令碼的詳細資訊,請參閱執行驗證指令碼的一般指導方針。使用 SCOM 受控執行個體建立中使用的網域帳戶,將 VM 加入網域。 若要將虛擬機器加入網域,請遵循網域加入驗證一節中提供的步驟。
在管理員模式中開啟 PowerShell ISE,並將 Set-ExecutionPolicy 設定為 Unrestricted。
執行下列命令以匯入模組:
Add-WindowsFeature RSAT-AD-PowerShell -ErrorAction SilentlyContinue Add-WindowsFeature GPMC -ErrorAction SilentlyContinue
若要驗證伺服器已成功加入網域,請執行下列命令:
(Get-WmiObject -Class Win32_ComputerSystem).PartOfDomain
若要檢查電腦群組是否存在,請執行下列命令:
$Credentials = New-Object pscredential -ArgumentList ("<username>", (ConvertTo-SecureString "password" -AsPlainText -Force)) $adGroup = Get-ADGroup -Identity $computerGroupName -Properties ManagedBy,DistinguishedName -Credential $Credentials
將使用者名稱、密碼和 computerGroupName 取代為適用的值。
若要檢查 gMSA 帳戶是否存在,請執行下列命令:
$adServiceAccount = Get-ADServiceAccount -Identity gMSAAccountName -Properties DNSHostName,Enabled,PrincipalsAllowedToRetrieveManagedPassword,SamAccountName,ServicePrincipalNames -Credential $Credentials
若要驗證 gMSA 帳戶屬性,請檢查 gMSA 帳戶是否已啟用:
(Get-ADServiceAccount -Identity <GmsaAccount>).Enabled
如果命令傳回 False,則請在網域中啟用帳戶。
若要確認 gMSA 帳戶的 DNS 主機名稱符合提供的 DNS 名稱 (LB DNS 名稱),請執行下列命令:
(Get-ADServiceAccount -Identity <GmsaAccount>).DNSHostName
如果命令未傳回預期的 DNS 名稱,請將 gMsaAccount 的 DNS 主機名稱更新為 LB DNS 名稱。
請確保 gMSA 帳戶的 Sam 帳戶名稱未超過 15 個字元的限制:
(Get-ADServiceAccount -Identity <GmsaAccount>).SamAccountName.Length
若要驗證
PrincipalsAllowedToRetrieveManagedPassword
屬性,請執行下列命令:檢查指定的電腦群組是否已設定為 gMSA 帳戶的 `PrincipalsAllowedToRetrieveManagedPassword``:
(Get-ADServiceAccount -Identity <GmsaAccount>).PrincipalsAllowedToRetrieveManagedPassword -contains (Get-ADGroup -Identity <ComputerGroupName>).DistinguishedName
以適用的值取代
gMSAAccount
和ComputerGroupName
。若要驗證 gMSA 帳戶的服務主體名稱 (SPN),請執行下列命令:
$CorrectSPNs = @("MSOMSdkSvc/$dnsHostName", "MSOMSdkSvc/$dnsName", "MSOMHSvc/$dnsHostName", "MSOMHSvc/$dnsName") (Get-ADServiceAccount -Identity <GmsaAccount>).ServicePrincipalNames
檢查結果是否有正確的 SPN。 將
$dnsName
取代為 SCOM 受控執行個體建立中指定的 LB DNS 名稱。 以 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> 無法新增至測試管理伺服器上的本機系統管理員群組,或在群組原則更新之後未保存在群組中
解析: 請確保提供的網域使用者名稱和 gMSA 輸入正確,包括全名 (網域\帳戶)。 也請檢查測試電腦上是否有任何群組原則覆寫本機系統管理員群組,因為原則是在 OU 或網域層級建立。 gMSA 和網域使用者必須是本機系統管理員群組的一部分,SCOM 受控執行個體才能運作。 SCOM 受控執行個體電腦必須從覆寫本機系統管理員群組的任何原則中排除 (使用 AD 系統管理員)。
問題:SCOM 受控執行個體失敗
原因: 網域中的群組原則 (名稱:<群組原則名稱>) 將覆寫測試管理伺服器上的本機系統管理員群組,無論是在包含伺服器的 OU 上還是在網域的根目錄上。
解析: 請確保 SCOM 受控執行個體管理伺服器的 OU (<OU 路徑>) 不會受覆寫群組之原則的影響。
群組原則驗證的一般疑難排解步驟
在 SCOM 受控執行個體建立所選擇的子網路內產生在 Windows Server 2022 或 2019 上執行的新虛擬機器 (VM)。 登入 VM,並將其 DNS 伺服器設定為使用建立 SCOM 受控執行個體期間所使用的相同 DNS IP。
您可以遵循下列提供的逐步指示,或如果您熟悉 PowerShell,請在 ScomValidation.ps1 指令碼中執行稱為
Invoke-ValidateLocalAdminOverideByGPO
的特定檢查。 如需在測試電腦上獨立執行驗證指令碼的詳細資訊,請參閱執行驗證指令碼的一般指導方針。使用 SCOM 受控執行個體建立中使用的網域帳戶,將 VM 加入網域。 若要將虛擬機器加入網域,請遵循網域加入驗證一節中提供的步驟。
在管理員模式中開啟 PowerShell ISE,並將 Set-ExecutionPolicy 設定為 Unrestricted。
執行下列命令以匯入模組:
Add-WindowsFeature RSAT-AD-PowerShell -ErrorAction SilentlyContinue Add-WindowsFeature GPMC -ErrorAction SilentlyContinue
若要驗證伺服器是否已成功加入網域,請執行下列命令:
(Get-WmiObject -Class Win32_ComputerSystem).PartOfDomain
這個指令必須傳回 True。
若要檢查 gMSA 帳戶是否存在,請執行下列命令:
Get-ADServiceAccount -Identity <GmsaAccount>
若要驗證本機系統管理員群組中使用者帳戶是否存在,請執行下列命令:
$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>
。若要判斷網域和組織單位 (OU) 詳細資料,請執行下列命令:
Get-ADOrganizationalUnit -Filter "DistinguishedName -like '$ouPathDN'" -Properties CanonicalName -Credential $domainUserCredentials
以實際的 OU 路徑取代 <OuPathDN>。
若要從網域取得 GPO (群組原則物件) 報告,並檢查是否在本機系統管理員群組上覆寫原則,請執行下列命令:
[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 管理伺服器從原則中排除。