Powershell搜索CSV文件,没有标题,且非标准分隔符;仅返回结果中的某些列

问题描述 投票:0回答:1

这里是我拥有的CSV文件中的示例行:

empcode〜1〜0〜FirstName〜LastName〜Nickname〜1〜startdate〜Supervisor〜Location〜Department〜JobTitle〜Extension

此文件每天都会使用新员工信息进行几次更新,我需要能够搜索新员工以获​​取其员工代码(empcode),名字(FirstName),姓氏(LastName),昵称(Nickname) )和职务(JobTitle)。

我正在寻找的是构建一个Powershell脚本来读取该文件并搜索用户名。然后,我要返回的结果将如下所示:

empcode名姓昵称部门

我不确定是采用Get-Content还是Import-CSV。指导将不胜感激。

谢谢!

powershell select multiple-columns delimiter import-csv
1个回答
0
投票

由于我太懒了,无法提供您未提供的数据,因此我将跳过读取数据。您可以使用Get-Content。 [咧嘴]

这是...

  • 从文件中获取一行
  • 创建标题项目列表
  • 创建要保留的标题列表
  • ConvertFrom-Csv-Delimiter-Header参数一起使用
  • 过滤掉不在管理员列表中的任何内容
  • 保存到$ Var中
  • 在屏幕上显示

代码...

$InStuff = 'empcode~1~0~TheFirstName~TheLastName~TheNickname~1~startdate~Supervisor~Location~TheDepartment~JobTitle~Extension'

$Header = @'
EmpCode
1stNumber
2ndNumber
FirstName
LastName
NickName
3rdNumber
StartDate
SupervisorName
Location
Department
JobTitle
Extension
'@ -split [System.Environment]::NewLine

$PropsToKeep = @(
    'FirstName'
    'LastName'
    'NickName'
    'Department'
    )

$OutStuff = $InStuff |
    ConvertFrom-Csv -Delimiter '~' -Header $Header |
    Select-Object -Property $PropsToKeep

$OutStuff

输出...

FirstName    LastName    NickName    Department   
---------    --------    --------    ----------   
TheFirstName TheLastName TheNickname TheDepartment

那时,您可以轻松地将$ Var发送到Export-Csv ... [grin]

© www.soinside.com 2019 - 2024. All rights reserved.