You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell中Where-Object无法读取部分属性的技术咨询

问题分析与解决办法

针对你遇到的Get-MsolCompanyInformation中DAPEnabled属性无法用Where-Object筛选的问题,主要有以下几个原因及对应解决方式:

1. 属性未被实际赋值(值为$null)

DAPEnabled是云解决方案提供商(CSP)租户的专属属性,若你的租户不属于CSP类型,该属性会处于未填充状态,值为$null。此时无论用-eq $true还是-eq $false都无法匹配,因为$null与任何布尔值都不相等。

验证方式:直接输出属性值确认

(Get-MsolCompanyInformation).DAPEnabled

若输出为空,说明该属性无有效数据,自然筛选不到结果。

2. 属性类型不匹配

部分MSOnline模块返回的属性,Get-Member显示的类型可能和实际运行时类型不一致。比如DAPEnabled可能被定义为布尔型,但实际返回字符串格式的"True"/"False",导致布尔值比较失效。

验证方式:查看属性实际类型

(Get-MsolCompanyInformation).DAPEnabled.GetType()

如果是字符串类型,需改用字符串比较:

Get-MsolCompanyInformation | Where-Object {$_.DAPEnabled -eq "True"}

3. 动态属性的绑定问题

MSOnline cmdlet返回的部分对象属于动态类型,部分属性是后期绑定的,Where-Object直接处理时可能无法正确识别属性。可以先将对象转换为标准PSCustomObject再筛选:

Get-MsolCompanyInformation | Select-Object * | Where-Object {$_.DAPEnabled -eq $true}

内容的提问来源于stack exchange,提问作者Stephen ePrivate

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 17:19:54