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

PowerShell中AliasProperty添加后显示与访问不一致的问题咨询

问题解析:动态AliasProperty的显示差异

两种场景的核心差异原因

  • 字符串对象场景:
    [string]是不可变类型,Add-Member无法直接修改原字符串对象,会自动创建一个PSObject包装器包裹原字符串,再把AliasProperty添加到这个包装器上。
    执行$s | gm时,Get-Member识别的是PSObject的成员集合,其中包含动态添加的Length2,因此能正常显示。

  • FileInfo/DirectoryInfo对象场景:
    dir返回的是System.IO.FileInfo或DirectoryInfo类型的对象,这类属于可变引用类型,Add-Member会直接在对象实例上添加动态AliasProperty。
    默认情况下,Get-Member仅展示对象基础.NET类型的固有成员,不会显示动态添加的实例级成员,所以看不到Length2;但PowerShell的成员访问机制会优先查找动态添加的成员,因此直接执行$s.Length2能正常返回值。

验证第二种场景的正确命令

如果要查看动态添加的AliasProperty,需要给Get-Member加上-Force参数:

$s = dir  # 假设返回单个FileInfo/DirectoryInfo对象
$s = Add-Member -InputObject $s -MemberType AliasProperty -Name Length2 -Value Length -PassThru
$s | gm -MemberType AliasProperty -Force  # 此时能看到Length2属性
$s.Length2  # 正常返回对应值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 11:58:20