【问题标题】:How to find if the local computer is in a domain?如何查找本地计算机是否在域中?
【发布时间】:2023-03-04 16:22:02
【问题描述】:

是否有一种简单且快速的方法来确定本地计算机是否已使用 PowerShell 加入域?

我找到了很多关于获取当前工作组或域的信息,但没有明确说明如何知道它是否真的是一个工作组或域。只是想在调用一些与 Active Directory 相关的东西之前找出这一点,这些东西只会在工作组计算机上长时间等待后才会出现超时。

[System.DirectoryServices.ActiveDirectory.Domain]::GetCurrentDomain() 方法需要很长时间才能在工作组计算机上失败,并且 WMI 类 Win32_ComputerSystem 显示名称,但如果它是真实域则不显示。

【问题讨论】:

    标签: powershell


    【解决方案1】:

    Win32_ComputerSystem 有一个PartOfDomain 属性,指示计算机是否已加入域。还有一个工作组属性 - 如果计算机在域中,则该属性应为空。

    例子:

    if ((gwmi win32_computersystem).partofdomain -eq $true) {
        write-host -fore green "I am domain joined!"
    } else {
        write-host -fore red "Ooops, workgroup!"
    }
    

    【讨论】:

      【解决方案2】:

      也许在 PowerShell 中输入“Systeminfo”并在“域”下查看?

      【讨论】:

      • 我的意思是你可以,但有很多更好的方法可以在 PowerShell 中以编程方式获取此信息,而不是解析 systeminfo 的输出。
      【解决方案3】:

      这很简单。有效,因为如果计算机不在域中,则默认用户域是本地计算机

      if ($env:computername  -eq $env:userdomain) { echo " no AD domain" } 
      else { echo "must be in AD"}
      

      【讨论】:

      • 如果用户使用本地帐户或内置系统帐户登录,则此方法不起作用。当用户和计算机不在同一个域中时,这在多域环境中也会失败。
      猜你喜欢
      • 1970-01-01
      • 2017-11-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多