Удалить текст из вывода PowerShell

У меня есть такая команда:

Get-WmiObject win32_service |
  ? {$_.Name -like '*Front*'} |
    ? {$_.PathName -like '*logdir*'} |
      select Name, PathName

Его выход такой:

Frontapp (Frontapp1) D:\Application\Frontapp\Frontapp.exe -service  -dbType mssql -ORBSvcConf D:\Frontapp83\Frontapp\svc.conf -connections 5 -connectionPoolSize 64 -logdir D:\Frontapp\log1

Frontapp (Frontapp0) D:\Frontapp83\Frontapp\Frontapp.exe -service  -dbType ora -ORBSvcConf D:\Frontapp83\Frontapp\svc.conf -connections 35 -connectionPoolSize 64 -logdir D:\Frontapp\log0

Как я могу удалить информацию из вывода, просто чтобы получить путь -logdir.

Требуется вывод:

Frontapp (Frontapp1) D:\Frontapp\log1

Frontapp (Frontapp0) D:\Frontapp\log0

person J10se    schedule 13.05.2020    source источник
comment
В стороне: командлеты CIM (например, Get-CimInstance) заменили командлеты WMI (например, Get-WmiObject) в PowerShell v3 (выпущенном в сентябре 2012 г.). Следовательно, следует избегать командлетов WMI, не в последнюю очередь потому, что PowerShell [Core] (версия 6 и выше), куда будут направлены все будущие усилия, даже не имеет их больше. Для получения дополнительной информации см. этот ответ.   -  person mklement0    schedule 14.05.2020
comment
Позвольте мне дать вам стандартный совет новичкам: если вы примете ответ, вы поможете будущим читателям, показывая то, что решило вашу проблему. Чтобы принять ответ, щелкните большой символ ✓ под большим числом слева от ответа (вы получите 2 очка репутации). Если у вас как минимум 15 очков репутации, вы также можете проголосовать за другие полезные ответы (при желании также принятый). Если ваша проблема еще не решена, оставьте отзыв или, если вы сами нашли решение, ответьте самостоятельно.   -  person mklement0    schedule 15.05.2020


Ответы (2)


Используйте вычисляемое свойство:

Get-WmiObject win32_service |
  ? { $_.Name -like '*Front*' -and $_.PathName -like '*logdir*' } |
    select Name, @{ n='LogDir'; e={ $_.PathName -replace '^.+logdir\s+' } }
person mklement0    schedule 13.05.2020

Split-Path может быть здесь полезен ...

Get-WmiObject win32_service |
? {$_.Name -like '*Front*'} |
? {$_.PathName -like '*logdir*'} |
Select Name, @{N="PathName";E={Split-Path $_.PathName}}
person Avshalom    schedule 13.05.2020