如何从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