PowerShell选择扩展的属性和自定义表达式



我想使用Import-Csv输出作为表格的表格,以获取特定列的第一个值的内容。

我可以做:

$File = '\webserverData_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 = '\webserverData_20190626.csv'
Import-Csv -Path $File -Delimiter ',' | select 'Effective Date', @{N='FileName';E={$_.Name}} -First 1

导致:

Effective Date     FileName
--------------     ---------
25-May-2019        

我应该如何继续?

您可以使用Select-Object的属性哈希表实现此目的,并使用方法将文件路径通过.Split()方法拆分。[-1]指示拆分结果中的最后一项。

$File = '\webserverData_20190626.csv'
Import-Csv -Path $File |
    Select-Object 'Effective Date',@{n='FileName';e={$File.Split('')[-1]}} -First 1

我很惊讶没有pspath或任何东西。

import-csv $file -delimiter ',' | 
select 'Effective Date', @{n='Filename';e={split-path -leaf $file}} -first 1

这是做事的略有不同的方法。[ grin ] #region >>> create a file to work with节可以忽略 - 在那里提供您未提供的数据文件。

它通过使用POSH可以点缀整个集合的一个属性的方式获取EffectiveDate信息,然后从结果数组中获取第一项。

它还避免使用EffectiveDate而不是Effective Date允许空间或其他特殊童童的副作用。如果您需要继续使用不良的嵌入式空间,请根据需要更改该字符串。

$File = "$env:TEMPData_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:TempData_20190626.csv

最新更新