我正在尝试使用 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
属性,该属性包含子属性以及 Name
和 Value
每个 $Stats
属性。
换句话说,要找出第一个 $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])
关于powershell - 如何使用powershell读取CSV文件的第一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69089645/