为何在域控制器上执行Get-LocalUser会列出计算机名?
为何在域控制器上执行Get-LocalUser会列出计算机名?
这个问题其实挺典型的,我来给你拆解清楚:
首先,域控制器(DC)的本地安全账户管理器(SAM)和普通成员服务器的不一样,它的本地数据库会和域级的账户数据有重叠关联。当你在DC上运行
Get-LocalUser时,这个PowerShell cmdlet的查询逻辑会把域内所有计算机账户(就是那些带$后缀的名称)也包含进来,这些计算机账户本质上是一种特殊的域账户,但在DC的本地SAM视角里会被识别并返回。再说说
net user的区别:在域控制器上,net user默认是查询域用户账户,而且它默认不会展示计算机这类特殊账户。如果你想让net user查询DC的本地用户,需要加上参数比如net user /domain:localhost,但即便如此,它也不会列出那些带$的计算机账户——因为net user的设计逻辑就是聚焦于普通用户账户,而非计算机账户。
简单总结下:两者的查询范围和逻辑不同,Get-LocalUser在DC上会拉取本地SAM里的所有条目(包括关联的域计算机账户),而net user默认只查域普通用户,自然看不到那些计算机名。
备注:内容来源于stack exchange,提问作者Abc




