我正在尝试使用 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)
问题是该列包含日期,而一个天才决定该列的标题将以一种奇怪的格式显示为计算机的时区。
那么,如何在不“知道”标题文本且不修改其他列标题的情况下读取第一列呢?
有没有办法通过索引访问该列?
每个PSCustomObject都有一些隐藏的属性:
$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 ...\nRun Code Online (Sandbox Code Playgroud)\n其中PSObject属性包含一个Properties包含子属性的属性以及每个属性的Name和。\n换句话说,要找出第一个属性(也称为第一列)的名称,您可以执行以下操作:Value$Stats$Stats[0]
$Stats[0].PSObject.Properties.Name[0]\nColumnHeader\nRun Code Online (Sandbox Code Playgroud)\n并检索该列的所有值:
\n$ColumnName = $Stats[0].PSObject.Properties.Name[0]\n$Stats.$ColumnName\nRun Code Online (Sandbox Code Playgroud)\n或者:
\n$Stats.($Stats[0].PSObject.Properties.Name[0])\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
4850 次 |
| 最近记录: |