【问题标题】:Powershell, paginating output from foreachPowershell,从foreach分页输出
【发布时间】:2010-02-25 18:55:46
【问题描述】:

看起来这应该很简单,但是powershell正在与我赢得另一场战斗。只是想输出系统上运行的所有服务的名称,以及它们的可执行路径,并将其通过管道传输到我可以用来搜索它的东西中,比如 Less。

到目前为止,我有:

$services = get-WmiObject -query 'select * from win32_service'
foreach($service in $services){$service.Name $service.Pathname} | less

但这给了我“不允许使用空管道元素”。我似乎出现了很多。任何人都告诉我如何解决这个问题,或者通过输出到一个文件并用 vim 浏览它,或者通过管道传输到 page/less/etc,这样我就可以进行快速扫描(我的眼睛还不是程序化的)。

【问题讨论】:

    标签: powershell service scripting less-unix


    【解决方案1】:

    尝试执行以下操作

    $services | %{ $_.Pathname } | less
    

    编辑向路径添加多个

    $services | %{ "{0} {1}" -f $_.Pathname,$_.Name } | less
    

    【讨论】:

    • 好的开始,编辑我的初始问题以添加 $service.Name ,这不适用于您的解决方案。有什么方法可以将多个东西添加到 %{} 构造中?
    • 您是否知道路径名在给定主机上是否保证是唯一的,或者多个服务是否可以具有相同的路径名?
    • @WoogyBoogyBoo 更新为将多个内容作为单个字符串放在路径中
    【解决方案2】:

    如果您使用的是 PowerShell 2.0,您可能会喜欢这样:

    gwmi win32_service | select-object Name,PathName | ogv
    

    ogv (Output-GridView) 是 2.0 中的新 cmdlet。

    【讨论】:

      【解决方案3】:
      get-wmiobject win32_service | select-object name, pathname | more
      

      这也是powershell 2.0,接近上面的评论。 在这种情况下,您只是在不需要时尝试使用 foreach。

      即使使用 foreach,您也接近获得可以使用的输出。 foreach 中的逗号会生成类似列表的输出,您可以使用 more 命令而不是 less。

      $services = get-WmiObject -query 'select * from win32_service'
      foreach($service in $services){$service.Name  $service.Pathname} | more
      

      这是编写相同语句的另一种方式。

      get-WmiObject win32_service | foreach{$.Name, $.Pathname} |更多

      这仍然与我的第一个示例不同,但我想向您展示您有多接近。

      【讨论】:

        【解决方案4】:

        看起来是使用 foreach-object 的好理由:

        $services = get-WmiObject -query 'select * from win32_service'
        $services|ForEach-Object {$_|Select-Object Name,Pathname}|less
        

        请见谅:

        get-WmiObject -query 'select * from win32_service' |ForEach-Object {$_|Select-Object Name,Pathname}|less
        

        foreach-object 将根据输入对象返回一个对象到管道。

        我假设 less 是您自己制作的别名,因为我似乎没有它。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2016-07-11
          • 1970-01-01
          • 1970-01-01
          • 2020-04-27
          • 2016-03-13
          • 2017-12-31
          • 2020-03-03
          相关资源
          最近更新 更多