powershell - 计算导入的 Excel 工作簿的列数 - 计算给定对象的属性
问题描述
我已使用此模块将 Excel 工作表导入 PowerShell :
我想计算列数,所以我使用了以下函数:
$columns = @(Import-Excel -Path "D:\Qlik\AccessRules\Roster\RosterTest-Jan.xlsx" -StartRow 1 -EndRow 1 -NoHeader)
现在这个数组有 51 个我猜的键。但是我怎么算呢?无论我尝试什么,我看到的都是 1。
我试过了:
$columns.Count
$columns.PSObject.BaseObject.Count
没有任何效果,请有任何想法。
解决方案
tl;博士:
@($columns.psobject.properties).Count
您正在寻找的是对象属性的计数,这可以通过.psobject.properties
集合来完成,该集合可用于PowerShell中的任何对象 - 因此也可用于[pscustomobject]
返回的实例Import-Excel
- 作为允许您检查的反射功能给定对象的属性。
对属性进行计数很棘手,因为-意外返回的特定集合数据类型.psobject.properties
既不实现 a也不实现属性。[System.Management.Automation.PSMemberInfoIntegratingCollection[System.Management.Automation.PSPropertyInfo]]
.Count
.Length
解决方法是使用@(...)
数组子表达式运算符,将各个属性收集为常规 PowerShell 数组( [object[]]
),然后您可以在其上调用.Count
:
@($columns.psobject.properties).Count
请参阅此 GitHub 问题,该问题要求.Count
在返回的集合上实现一个属性,.psobject.properties
以使这种解决方法变得不必要。
推荐阅读
- python - 从谷歌地图距离矩阵 API 检索历史数据?
- html - 如何选择所有嵌套段落?
- reactjs - React - 内容变得可见后重新渲染
- json - 通过 api 调用部署预定义数据的最佳方式是什么?
- java - MicroProfile Metrics 不显示 Wildfly 25 上的自定义指标
- android - android:noHistory="true" 或设置标志在可穿戴应用程序中不起作用
- python - 如何使用 Web UI 在 EC2 上运行 Locust
- javascript - TypeError:添加路由时无法读取未定义的属性(读取“位置”)
- github - 触发 github 工作流调度事件后获取运行 ID
- reactjs - 反应状态不更新输入更改