替换对象属性中的一些文本?

时间:2016-10-29 01:34:16

标签: powershell

我需要请求一些以对象形式出现的信息。我需要在其中一个属性中替换一些测试,然后将对象列表写入CSV。

当我这样做时

Get-Process | select * | %{ $_Path.Replace("chrome", "ie") }

我有两个问题

  1. 如果$ _.Path为null,则会给出一个错误,您无法在空值表达式上调用方法
  2. 输出是一个表示已替换文本的字符串(只是Path属性)。我需要保留原始对象及其所有属性,但需要更新路径值。
  3. 当然,当我尝试做

    Get-Process | select * | %{ $_Path.Replace("chrome", "ie") } | Export-Csv -Path "out.csv"
    

    我得到的是单个属性Length,因为上面的输出是只有Length属性的字符串。

2 个答案:

答案 0 :(得分:1)

Get-Process | select * | %{ $_.Path = $_.Path.Replace("chrome", "ie"); $_ } | Export-Csv -Path "out.csv" -NoTypeInformation
  • $_.Path代替$_Path
  • 将替换后的文本分配回路径属性
  • 并在完成作业后输出对象

帮助链接(如果有):

答案 1 :(得分:0)

试试这个

 Get-Process | select *, @{N="Path";E={$_.Path.Replace("chrome", "ie") }} -ExcludeProperty Path | export-csv -Path "c:\temp\out.csv" -NoTypeInformation