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

Get-Module -ListAvailable按Directory分组输出的实现原理是什么?

PowerShell Get-Module 按目录分组输出的实现原理

这种分组效果是PowerShell的格式化引擎基于预定义规则实现的,和你捕获的数组本身结构没有关系,具体逻辑如下:

  • 你没在PSModuleInfo对象的公开属性中找到Directory属性是正常的,每个模块对应的目录路径实际存储在隐藏属性ModuleBase中,你可以执行Get-Module -ListAvailable | Select-Object Name, ModuleBase直接查看每个模块对应的目录路径。
  • PowerShell为每种类型的输出对象都预设了专门的格式化规则(存储在.ps1xml格式的系统配置文件中),对于PSModuleInfo类型的对象,官方预设的格式化规则就指定了按ModuleBase属性分组展示。
  • 你用$m = Get-Module -ListAvailable捕获到的数组确实是普通的PSModuleInfo对象集合,本身没有任何分组结构。但当你直接打印$m时,PowerShell的格式化引擎会自动读取PSModuleInfo对应的格式化规则,遍历所有对象按ModuleBase分组后再渲染输出,所以依然会呈现按目录分段的展示效果。

你也可以手动指定分组规则覆盖默认配置,比如执行Get-Module -ListAvailable | Format-Table -GroupBy ModuleType,输出就会变成按模块类型分组,进一步验证分组是格式化引擎的渲染效果,和对象集合本身的结构无关。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 06:15:07