我想使用Import-Csv
输出作为文件名称旁边的表格来获取特定列的第一个值的内容。
我可以做到:
$File = '\\webserver\Data_20190626.csv'
Import-Csv -Path $File -Delimiter ',' | select 'Effective Date' -First 1
这给了我我期望的输出:
Effective Date
--------------
25-May-2019
我想看的是:
Effective Date FileName
-------------- ---------
25-May-2019 Data_20190626.csv
我已经尝试过了:
$File = '\\webserver\Data_20190626.csv'
Import-Csv -Path $File -Delimiter ',' | select 'Effective Date', @{N='FileName';E={$_.Name}} -First 1
导致的结果:
Effective Date FileName
-------------- ---------
25-May-2019
我应该如何进行?
答案 0 :(得分:1)
您可以使用Select-Object
的属性哈希表,并使用\
方法将文件路径按.Split()
进行拆分。 [-1]
表示分割结果中的最后一项。
$File = '\\webserver\Data_20190626.csv'
Import-Csv -Path $File |
Select-Object 'Effective Date',@{n='FileName';e={$File.Split('\')[-1]}} -First 1
答案 1 :(得分:0)
我很惊讶没有PSPath之类的东西。
import-csv $file -delimiter ',' |
select 'Effective Date', @{n='Filename';e={split-path -leaf $file}} -first 1
答案 2 :(得分:0)
这是一种稍微不同的处理方式。 [ grin ] #region >>> create a file to work with
部分可以忽略-它是提供您未提供的数据文件的地方。
它使用PoSh可以点寻址整个集合的一个属性,然后从结果数组中获取第一项的方式来获取EffectiveDate
信息。
通过使用EffectiveDate
而不是Effective Date
,还避免了在属性名称中允许使用空格或其他特殊字符的通常令人困惑的副作用。如果您需要继续使用贫乏的嵌入式空间,请根据需要更改该字符串。
$File = "$env:TEMP\Data_20190626.csv"
#region >>> create a file to work with
@'
EffectiveDate
2019-06-25
2006-06-06
2005-05-05
'@ |
ConvertFrom-Csv |
Export-Csv -LiteralPath $File -NoTypeInformation
#endregion >>> create a file to work with
$Results = [PSCustomObject]@{
EffectiveDate = (Import-Csv -LiteralPath $File).EffectiveDate[0]
FileName = $File
}
$Results
输出...
EffectiveDate FileName
------------- --------
2019-06-25 C:\Temp\Data_20190626.csv