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

J4N*_*J4N 2 csv powershell

我正在尝试使用 powershell 读取 CSV 文件。

我目前执行以下操作:

#Reading CSV
$stats = Import-Csv -Path $counterFile -Delimiter $separator
Run Code Online (Sandbox Code Playgroud)

现在我需要提取不同对象中的列值。

我已经看到我应该能够像这样访问它:

$stats.ColumnHeader
Run Code Online (Sandbox Code Playgroud)

问题是该列包含日期,而一个天才决定该列的标题将以一种奇怪的格式显示为计算机的时区。

那么,如何在不“知道”标题文本且不修改其他列标题的情况下读取第一列呢?

有没有办法通过索引访问该列?

iRo*_*Ron 5

每个PSCustomObject都有一些隐藏的属性:

\n
$Stats |Get-Member -Force\n\nName        MemberType   Definition\n----        ----------   ----------\npstypenames CodeProperty System.Collections.ObjectModel.Collection`1[[System.String, System.Private.CoreLib, Version=5.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]] pstypenames{get=PSTypeNames;}\npsadapted   MemberSet    psadapted {ToString, GetType, Equals, GetHashCode}\npsbase      MemberSet    psbase {ToString, GetType, Equals, GetHashCode}\npsextended  MemberSet    psextended {Id, Name, Country, EMail, Age, ReportsTo}\npsobject    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\xe2\x80\xa6\nEquals      Method       bool Equals(System.Object obj)\nGetHashCode Method       int GetHashCode()\nGetType     Method       type GetType()\nToString    Method       string ToString()\n...         NoteProperty ...\n
Run Code Online (Sandbox Code Playgroud)\n

其中PSObject属性包含一个Properties包含子属性的属性以及每个属性的Name和。\n换句话说,要找出第一个属性(也称为第一列)的名称,您可以执行以下操作:Value$Stats
$Stats[0]

\n
$Stats[0].PSObject.Properties.Name[0]\nColumnHeader\n
Run Code Online (Sandbox Code Playgroud)\n

并检索该列的所有值:

\n
$ColumnName = $Stats[0].PSObject.Properties.Name[0]\n$Stats.$ColumnName\n
Run Code Online (Sandbox Code Playgroud)\n

或者:

\n
$Stats.($Stats[0].PSObject.Properties.Name[0])\n
Run Code Online (Sandbox Code Playgroud)\n