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

如何让PowerShell的Get-Member正确识别数组对象类型?

问题分析与解决

为什么$array|Get-Member显示System.String

PowerShell的管道会自动枚举集合/数组,把数组里的每个元素依次传递给后续命令。Get-Member收到每个字符串元素后,会输出它们的类型信息,最终你看到的是合并后的System.String类型(重复类型只会显示一次),而非原数组对象的类型。

为什么get-member $array报错

Get-Member的位置参数需要的是单个输入对象,但直接传数组时,PowerShell同样会枚举数组,把多个字符串元素传给命令,而Get-Member无法处理多个位置参数,因此报错。

正确获取数组对象类型的方法

  • 方法1:使用-InputObject参数
    直接指定输入对象为整个数组,避免枚举:

    Get-Member -InputObject $array
    

    执行后会显示数组对应的类型,比如字符串数组会输出TypeName: System.String[]。

  • 方法2:用逗号包裹数组,阻止枚举
    把原数组包装成一个单元素数组,管道传递时只会枚举外层数组的唯一元素(即原数组):

    ,$array | Get-Member
    
  • 方法3:直接调用GetType()方法
    这是最直接获取对象类型的方式,无需借助Get-Member:

    $array.GetType()
    

    输出会直接显示数组的完整类型信息,类似:

    IsPublic IsSerial Name                                     BaseType
    -------- -------- ----                                     --------
    True     True     String[]                                 System.Array
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 01:22:04