PowerShell 中计算机的 NetBIOS 域
如何从 PowerShell 获取当前计算机的 NetBIOS(又名“短”)域名?
$ENV:USERDOMAIN 显示当前用户的域,但我想要当前计算机所属的域。
我发现你可以在 VBScript 中很容易地做到这一点,但显然ADSystemInfo 不太好用在 PowerShell 中。
更新
这是我的最终解决方案,其中包含使用 Win32_NTDomain,但过滤到当前机器的域
$wmiDomain = Get-WmiObject Win32_NTDomain -Filter "DnsForestName = '$( (Get-WmiObject Win32_ComputerSystem).Domain)'"
$domain = $wmiDomain.DomainName
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(11)
在大多数情况下,默认 NetBIOS 域名是 DNS 域名中最左边的标签,最多为前 15 个字节(NetBIOS 名称的限制为 15 个字节)。
NetBIOS 域名在 Active Directory 安装过程中可能会更改,但无法更改。
WIN32_ComputerSystem WMI 对象提供 Windows 计算机上的信息,
因此域名由以下方式给出:
但在域安装中,给出了 DNS 名称。在这种情况下,您可以使用
nbtstat -n
命令查找NetBIOS域名,其显示如下<1B>
。PowerShell 命令可能是:
这是使用 WMI 的另一种方法
In most cases, the default NetBIOS domain name is the leftmost label in the DNS domain name up to the first 15 bytes (NetBIOS names have a limit of 15 bytes).
The NetBIOS domain name may be changed during the installation of the Active Directory, but it cannot be changed.
The WIN32_ComputerSystem WMI object gives informations on a Windows computer
So the domain Name is given by :
But in domain installation, the DNS name is given. In this case, you can use
nbtstat -n
command to find the NetBIOS domain name which is displayed like this<DOMAIN><1B>
.The PowerShell Command may be :
Here is another way using WMI
获取环境设置
使用
env:
通过 PowerShell NetBIOS:
$ env:userdomain
FQDN:$env:userdnsdomain
要查看所有值:
Use
env:
to get environment settings through PowerShellNetBIOS:
$env:userdomain
FQDN:
$env:userdnsdomain
To see all the values:
来自此处
From Here
OP 在“计算机域”之后,所以答案是
$GetComputerDomain
(如下),但我也会添加 $GetUserDomain 以供参考。我发现 wmi (gwmi) 选项非常慢,特别是当您查询 Win32_NTDomain 类时。我有一个多信任的域环境,当我只需要快速获得简单的信息时,它需要很长时间。
OP is after "computer domain" so the answer would be
$GetComputerDomain
(below) but I will add the $GetUserDomain also for reference.I find the wmi (gwmi) option to be extremely slow, especially, when you are querying the Win32_NTDomain class. I have a multi-trusted domain environment and it takes forever when I just need that simple info quick.
使用 Active Directory Cmdlet Get-ADDomain:
Use the Active Directory Cmdlet Get-ADDomain:
这是另一种比 Win32_NTDomain 更快的方法,用于获取计算机的 NetBIOS 域。
Here is another faster method than Win32_NTDomain, for getting the NetBIOS domain of the computer.
使用 ADSystemInfo COM 对象应该可以工作,不会因 Win32_NTDomain 查找而延迟:
此 COM 对象还提供其他与 AD 相关的属性:
https://learn.microsoft.com/en-us/windows/win32/adsi/iadsadsysteminfo-property-methods
[已编辑 - 已更新使用 ADSystemInfo - 响应 WinNTSystemInfo 仅返回用户短域的评论]
Using the ADSystemInfo COM object should work, with no delay from Win32_NTDomain lookup:
There are other AD-related properties available from this COM object too:
https://learn.microsoft.com/en-us/windows/win32/adsi/iadsadsysteminfo-property-methods
[EDITED - Updated to use ADSystemInfo - in response to a comment that WinNTSystemInfo only returns the user's short domain]
使用 NetGetJoinInformation 和 P/Invoke:
Using
NetGetJoinInformation
and P/Invoke:这也可以通过使用.NET框架来完成(比WMI快得多)
将返回
This can also be done by using .NET framework (which is much faster than WMI)
Will return
下面的 powershell 命令效果很好!我在尝试了各种解决方案后进行了测试。
如果您使用以下 .Net 命令:
它也可以工作,但它使用 DNS 来解析,在我的例子中,我们有 WINS 设置来支持需要它的应用程序,因此无法使用它。下面是我最终使用的脚本的一部分,我用它来检查每个客户端的 WINS 注册:
http://social.technet.microsoft.com/Forums/en-US/f52eb2c7-d55d-4d31-ab4e-09d65d366771/how-to-process-cmd-nbtstat-a-ipaddress-output- and-display-the-computer-name-in-powershell?forum=ITCG
上面的链接有主题和对话。
The below powershell command works great! I tested after trying various solutions.
If you use the following .Net command:
It works too, but it is using DNS to resolve, in my case, we have WINS setup to support an application that requires it, so can't use it. Below is what I ended up using as part of a script I use to check for WINS registration for each client:
http://social.technet.microsoft.com/Forums/en-US/f52eb2c7-d55d-4d31-ab4e-09d65d366771/how-to-process-cmd-nbtstat-a-ipaddress-output-and-display-the-computer-name-in-powershell?forum=ITCG
The above link has the thread and conversation.