Get-ADComputer在Server2019与Win10返回属性差异解决方案
问题现象
在Windows Server 2019(PowerShell版本5.1.17763.2931)中执行命令:
Get-ADComputer $CompName -Properties * | Get-Member | ft -AutoSize
可正常返回包含Description属性在内的百余项AD计算机对象属性、方法完整列表。
使用完全相同的AD账号在Windows 10(PowerShell版本5.1.19041.1682)上执行同一条命令时,仅能返回十余项默认属性,无法查询到计算机描述属性,但Win10端通过ADUC控制台可正常查看Active Directory中存储的计算机描述信息。
问题1:除Get-ADComputer外获取AD计算机对象描述属性的方法
以下方法均不依赖-Properties *参数的行为,可稳定获取描述字段:
- 使用LDAP原生查询接口(无需依赖RSAT AD模块,兼容性最强)
$CompName = "替换为目标计算机名" $searcher = New-Object System.DirectoryServices.DirectorySearcher $searcher.Filter = "(&(objectCategory=computer)(sAMAccountName=$CompName$))" $searcher.PropertiesToLoad.AddRange(@("name","description")) $res = $searcher.FindOne() # 直接输出描述值 $res.Properties.description
- 调用AD账户管理类库查询
Add-Type -AssemblyName System.DirectoryServices.AccountManagement $domainCtx = New-Object System.DirectoryServices.AccountManagement.PrincipalContext([System.DirectoryServices.AccountManagement.ContextType]::Domain) $compObj = [System.DirectoryServices.AccountManagement.ComputerPrincipal]::FindByIdentity($domainCtx, $CompName) $compObj.Description
- 使用原生命令行工具查询(需安装RSAT AD管理工具)
:: 替换为目标计算机名执行 dsquery computer -name "WIN10-TEST-01" | dsget computer -desc
问题2:Win10端让Get-ADComputer返回全量属性的配置方案
该问题本质是Win10端自带的RSAT AD PowerShell模块默认对计算机对象的返回属性做了裁剪,和Server 2019端模块内置的默认属性集配置不一致,和账号权限无关,可通过以下方案解决:
- 不依赖模块版本的兼容方案(推荐)
不要直接用-Properties *通配符,手动显式传入需要拉取的属性列表,或先枚举域内计算机对象的全量属性名再传入,命令如下:# 仅拉取描述属性的场景,直接指定属性名即可 Get-ADComputer $CompName -Properties Description # 需要拉取全量属性的场景,先获取所有属性名再传入 $allPropNames = (Get-ADComputer -Filter * -ResultSetSize 1).Properties.PropertyNames Get-ADComputer $CompName -Properties $allPropNames | Get-Member | ft -AutoSize - 修改当前会话配置临时生效
清空AD模块内置的默认计算机属性过滤规则,当前会话内即可让-Properties *正常返回全量属性:
该配置仅对当前PowerShell窗口生效,如需永久生效,可将上述配置命令写入PowerShell用户配置文件(路径可通过(Get-Module ActiveDirectory).SessionState.PSVariable.Get("defaultComputerProperties").Value = $null # 执行原命令验证 Get-ADComputer $CompName -Properties * | Get-Member | ft -AutoSize$PROFILE变量查看)。 - 对齐模块版本彻底修复
卸载Win10端当前安装的RSAT AD管理工具,从同版本Windows Server 2019系统的C:\Windows\System32\WindowsPowerShell\v1.0\Modules\ActiveDirectory路径下拷贝完整的ActiveDirectory模块文件夹,替换Win10端对应路径的同名文件,重启PowerShell后即可和Server 2019端行为完全一致。
内容的提问来源于stack exchange,提问作者Ed R.
相关产品推荐
相关产品推荐

