Windows

有沒有辦法以程式方式確定 Windows 電腦是否作為 SYSTEM 加入 AAD?

  • June 9, 2022

我希望能夠通過腳本確定給定的 Windows 工作站是加入 AAD、加入混合 AD 還是加入本地 AD。

我想從我正在使用的 RMM 執行這個腳本,這樣我就可以將這些結果儲存在 RMM 中,並且能夠輕鬆地將電腦分為這三個類別(加上一個用於未加入任何類型域的工作站)。

我正在使用的 RMM 作為 NT AUTHORITY\SYSTEM 執行 powershell 腳本。

獲取此資訊的典型推薦方法是執行命令

dsregcmd /status

但是,根據Microsoft 的文件

dsregcmd /status 實用程序必須作為域使用者帳戶執行。

我已經在自己的​​測試中驗證了在 Powershell 中執行 dsregcmd /status 作為 NT AUTHORITY\SYSTEM 返回錯誤

dsregcmd : The term 'dsregcmd' is not recognized as the name of a cmdlet, function, script file, or operable program.

在 cmd 中執行該命令會返回類似的錯誤。

當我嘗試指定 dsregcmd.exe 的完整路徑時,錯誤是相同的。

以SYSTEM身份執行時,有沒有辦法讓這個命令工作?或者,是否有另一種方法可以確定工作站在以 SYSTEM 身份執行時是否加入了 AAD?

查詢系統資料庫 https://nerdymishka.com/articles/azure-ad-domain-join-registry-keys/

確定機器是否加入 AzureAd HKLM:/SYSTEM/CurrentControlSet/Control/CloudDomainJoin/JoinInfo/{Guid}

在密鑰下方,可以找到以下密鑰: – TenantId – UserEmail

$subKey = Get-Item "HKLM:/SYSTEM/CurrentControlSet/Control/CloudDomainJoin/JoinInfo"

$guids = $subKey.GetSubKeyNames()
foreach($guid in $guids) {
   $guidSubKey = $subKey.OpenSubKey($guid);
   $tenantId = $guidSubKey.GetValue("TenantId");
   $userEmail = $guidSubKey.GetValue("UserEmail");
}

引用自:https://serverfault.com/questions/1102916