如何使用powershell读取CSV文件的第一列



我正在尝试使用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属性的NameValue
换句话说,要查找第一个$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])

相关内容

  • 没有找到相关文章

最新更新