如何从PowerShell中获取当前计算机的NetBIOS(又称“短”)域名?

$ ENV:USERDOMAIN显示当前用户的域,但是我想要当前计算机所属的域。

我发现您可以做到pretty easily in VBScript,但显然可以在PowerShell中实现ADSystemInfo isn't very nice to use

更新资料

这是我的最终解决方案,其中包含使用Win32_NTDomain的建议,但过滤到当前计算机的域

$wmiDomain = Get-WmiObject Win32_NTDomain -Filter "DnsForestName = '$( (Get-WmiObject Win32_ComputerSystem).Domain)'"
$domain = $wmiDomain.DomainName

最佳答案

在大多数情况下,默认的NetBIOS域名是DNS域名中最左边的标签,最多前15个字节(NetBIOS名称的限制为15个字节)。
在安装Active Directory期间可以更改NetBIOS域名,但是不能更改。

WIN32_ComputerSystem WMI对象在Windows计算机上提供信息

PS C:\> Get-WmiObject Win32_ComputerSystem

Domain              : WORKGROUP
Manufacturer        : Hewlett-Packard
Model               : HP EliteBook 8530w (XXXXXXXXX)
Name                : ABCHPP2
PrimaryOwnerName    : ABC
TotalPhysicalMemory : 4190388224

因此,域名由下式给出:
PS C:\> (gwmi WIN32_ComputerSystem).Domain

但是在域安装中,会给出DNS名称。在这种情况下,可以使用nbtstat -n命令查找显示为<DOMAIN><1B>的NetBIOS域名。

PowerShell命令可能是:
nbtstat -n | Select-String -Pattern "^ *(.*) *<1B>.*$" | % {$_ -replace '^ *(.*) *<1B>.*$','$1'}

这是使用WMI的另一种方法
PS C:\> (gwmi Win32_NTDomain).DomainName

10-06 12:35