【发布时间】:2015-07-30 17:10:05
【问题描述】:
Select-Object 上的此页面仅说 -ExpandProperty “指定要选择的属性,并指示应尝试扩展该属性。”您还记得定义不应包含正在定义的单词的旧规则,即真正要扩展的是什么?
这是我的概念验证代码:
get-wmiobject -class CIM_VideoController
$VideoController = get-wmiobject -class CIM_VideoController
$VideoProcessorEx = $VideoController | select-object -expand VideoProcessor
$VideoProcessor = $VideoController | select-object -property VideoProcessor
Write-Host "VideoProcessorEx =$VideoProcessorEx"
Write-Host "VideoProcessor=$VideoProcessor"
第一行代码显示处理器是这样的:
VideoProcessor : Quadro 1000M
两个 Write-Host 语句显示了这一点:
VideoProcessorEx =Intel(R) HD Graphics Family Quadro 1000M
VideoProcessor=
所以我的部分问题是这个。 VideoProcessor 真的是“Quadro 1000M”或“Intel(R) HD Graphics Family Quadro 1000M”,还是两者都正确,一个是短名称,一个是长(或扩展)名称?如何将短名称检索到变量?
根据“halfknot”的回复,我添加了这个:
Write-Host "************* Get-Member of `$VideoProcessor **********************"
$VideoProcessor | get-member
Write-Host "VideoProcessor via obj.property = $($VideoProcessor.VideoProcessor)"
得到了这个结果:
************* Get-Member of $VideoProcessor **********************
TypeName : Selected.System.Management.ManagementObject
Name : Equals
MemberType : Method
Definition : bool Equals(System.Object obj)
TypeName : Selected.System.Management.ManagementObject
Name : GetHashCode
MemberType : Method
Definition : int GetHashCode()
TypeName : Selected.System.Management.ManagementObject
Name : GetType
MemberType : Method
Definition : type GetType()
TypeName : Selected.System.Management.ManagementObject
Name : ToString
MemberType : Method
Definition : string ToString()
TypeName : Selected.System.Management.ManagementObject
Name : VideoProcessor
MemberType : NoteProperty
Definition : System.String VideoProcessor=Intel(R) HD Graphics Family
VideoProcessor via obj.property = Intel(R) HD Graphics Family Quadro 1000M
我仍然不清楚为什么它不只是按照 WMI 类的原始输出显示“Quadro 1000M”。
【问题讨论】:
标签: wmi powershell-4.0