我正在尝试使用powershell读取CSV文件。
我现在做的是:
#Reading CSV
$stats = Import-Csv -Path $counterFile -Delimiter $separator
现在我需要提取不同对象中的列值。
我已经看到我应该能够像这样访问它:
$stats.ColumnHeader
问题是这一列包含日期,一个天才决定将这一列的标题以一种奇怪的格式作为计算机的时区。
如果我不知道怎么读第一列呢?标题文本,而不修改其他列的标题?
是否有通过索引访问该列的方法?
每个PSCustomObject
都有一些隐藏的属性:
$Stats |Get-Member -Force
Name MemberType Definition
---- ---------- ----------
pstypenames CodeProperty System.Collections.ObjectModel.Collection`1[[System.String, System.Private.CoreLib, Version=5.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]] pstypenames{get=PSTypeNames;}
psadapted MemberSet psadapted {ToString, GetType, Equals, GetHashCode}
psbase MemberSet psbase {ToString, GetType, Equals, GetHashCode}
psextended MemberSet psextended {Id, Name, Country, EMail, Age, ReportsTo}
psobject MemberSet psobject {BaseObject, Members, Properties, Methods, ImmediateBaseObject, TypeNames, get_BaseObject, get_Members, get_Properties, get_Methods, get_ImmediateBaseObject, get_TypeNames, ToString, Copy, CompareTo, Equals, GetHash…
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
... NoteProperty ...
其中PSObject
属性包含一个Properties
属性,该属性包含子属性以及每个$Stats
属性的Name
和Value
。
换句话说,要查找第一个$Stats[0]
属性(即第一列)的名称,可以执行:
$Stats[0].PSObject.Properties.Name[0]
ColumnHeader
并检索该列的所有值:
$ColumnName = $Stats[0].PSObject.Properties.Name[0]
$Stats.$ColumnName
或:
$Stats.($Stats[0].PSObject.Properties.Name[0])