我希望能够通过脚本确定给定的 Windows 工作站是否加入了 AAD、混合 AD 还是本地 AD。
我想从我正在使用的 RMM 运行这个脚本,这样我就可以将这些结果存储在 RMM 中,并且能够轻松地将计算机分组到这三个类别中(加上一个未加入任何类型域的工作站)。
我正在使用的 RMM 以 NT AUTHORITY\SYSTEM 身份运行 powershell 脚本。
获取此信息的通常推荐方法是运行命令
dsregcmd /status
然而,根据微软的文档
dsregcmd /status 实用程序必须作为域用户帐户运行。
我在自己的测试中验证,在 Powershell 中以 NT AUTHORITY\SYSTEM 身份运行 dsregcmd /status 会返回错误
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?
答案1
查询注册表 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");
}