如何优化PowerShell代码以获取指定作者模块及其下载量
PowerShell代码优化方案
原代码存在的核心问题:
- 重复调用
Find-Module,第一次取模块名、第二次逐个查询下载量,多做了不必要的网络请求,效率偏低 - 使用数组
+=操作,每次都会创建新数组,数据量大时性能损耗明显 - 冗余的数组长度判断逻辑,实际上每个模块必然对应一个下载量,数组长度始终一致
优化后的代码:
Find-Module | Where-Object { $_.Author -eq 'NAME' } | ForEach-Object { [PSCustomObject]@{ Modules = $_.Name Count = [int]$_.AdditionalMetadata.DownloadCount } }
优化说明:
- 仅调用一次
Find-Module,直接从返回的模块对象中提取名称和下载量,减少网络开销 - 直接通过管道生成
PSCustomObject,无需中间数组存储,简化逻辑的同时提升性能 - 给
DownloadCount添加[int]类型转换,确保数值类型准确,避免后续处理可能出现的类型问题
内容的提问来源于stack exchange,提问作者I am Jakoby
相关产品推荐
相关产品推荐

