【问题标题】:Filter using -replace使用 -replace 过滤
【发布时间】:2012-05-09 15:05:34
【问题描述】:

我正在努力了解-replace。有人可以帮帮我吗?

作为练习,我试图简单地过滤:

@{processName=chrome}

这样chrome 就会返回到我试图将其输出到的列表框中。

到目前为止,我有:

$processnames = Get-Process | select ProcessName | -replace '^@{processname=',''

我知道我做错了什么,有人可以指出正确的方向并解释为什么吗?

【问题讨论】:

    标签: regex powershell replace


    【解决方案1】:

    试试这个让进程名没有最后的}:

    $Processnames = Get-Process | Select ProcessName | foreach { $_ -replace '^@{processname=(.*)}' , '$1' }
    

    【讨论】:

      【解决方案2】:

      您可以在不使用替换操作的情况下获取进程名称:

      Get-Process | Select-Object -ExpandProperty Name
      

      仅获取 chrome 进程:

      Get-Process chrome | Select-Object -ExpandProperty Name
      

      【讨论】:

        【解决方案3】:

        使用 -replace 需要你有一个对象传递给它。所以为了让你的命令起作用:

        
        $Processnames = Get-Process | Select ProcessName | 
           foreach {$_ -replace '^@{processname=',''}
        

        请记住,当您将多个对象传递到管道中以进行操作时,您必须将它们传递到 foreach 循环中。你告诉它我想取$_ 值并寻找^@processname= 并将其替换为blank

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-12-14
          • 1970-01-01
          • 1970-01-01
          • 2014-10-23
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多