PowerShell中计算机的NetBIOS域

Dav*_*ner 17 powershell wmi netbios active-directory

如何从PowerShell获取当前计算机的NetBIOS(又名"简称")域名?

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

我发现你可以在VBScript中很容易地做到这一点,但显然在PowerShell中使用ADSystemInfo并不是很好.

更新

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

$wmiDomain = Get-WmiObject Win32_NTDomain -Filter "DnsForestName = '$( (Get-WmiObject Win32_ComputerSystem).Domain)'"
$domain = $wmiDomain.DomainName
Run Code Online (Sandbox Code Playgroud)

JPB*_*anc 20

在大多数情况下,默认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
Run Code Online (Sandbox Code Playgroud)

所以域名由下式给出:

PS C:\> (gwmi WIN32_ComputerSystem).Domain
Run Code Online (Sandbox Code Playgroud)

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

PowerShell命令可能是:

nbtstat -n | Select-String -Pattern "^ *(.*) *<1B>.*$" | % {$_ -replace '^ *(.*) *<1B>.*$','$1'}
Run Code Online (Sandbox Code Playgroud)

这是使用WMI的另一种方式

PS C:\> (gwmi Win32_NTDomain).DomainName
Run Code Online (Sandbox Code Playgroud)

  • Win32_NTDomain看起来像赢家.请注意,返回多个条目,包括本地计算机和可能的其他可信域(如果有的话) (4认同)

小智 9

用于env:通过PowerShell获取环境设置

的NetBIOS: $env:userdomain

FQDN: $env:userdnsdomain

要查看所有值:

dir env:  (no $)
Run Code Online (Sandbox Code Playgroud)

  • 我的问题中已经提到了这个答案。虽然它不返回计算机的域(这就是我要问的) (2认同)

小智 5

import-module activedirectory
(Get-ADDomain -Identity (Get-WmiObject Win32_ComputerSystem).Domain).NetBIOSName
Run Code Online (Sandbox Code Playgroud)