ТЛ; др
@($columns.psobject.properties).Count
То, что вы ищете, - это число свойств объекта , которое можно сделать с помощью .psobject.properties
collection , то есть доступно для любого объекта в PowerShell - и, следовательно, также для [pscustomobject]
экземпляров, возвращаемых Import-Excel
- в качестве отражения , которое позволяет вам проверять данный объект свойства.
Подсчет свойств сложен , потому что определенный тип данных коллекции, возвращаемый .psobject.properties
- [System.Management.Automation.PSMemberInfoIntegratingCollection[System.Management.Automation.PSPropertyInfo]]
- неожиданно не реализует ни .Count
или .Length
свойство .
Обходной путь заключается в использовании @(...)
, оператора подвыражения массива, для сбора отдельных свойств в виде обычного массива PowerShell ([object[]]
), на котором вы затем можете Звоните .Count
:
@($columns.psobject.properties).Count
См. эту проблему GitHub , которая требует, чтобы свойство .Count
было реализовано в коллекции, возвращаемой .psobject.properties
, чтобы сделать этот обходной путь ненужным.