Разобрать выходные данные одной команды, чтобы получить заданное значение c с помощью Powershell - PullRequest
0 голосов
/ 14 января 2020

У меня есть команда TIBCO bwadmin show application, которая выдает выходные данные, как показано ниже.

TIBCO ActiveMatrix BusinessWorks version 6.x.x, hotfix 10, build V145, 2019-03-27

Domain: DOMAIN_NAME

Name                                               Version  AppSpace                       Profile                        Status          Deployment Status (Running/Total)
ApplicationName1.app                                1.1      APPSPACE_NAME                  DEV.substvar                   Running         Deployed          (1/1)
ApplicationName2.app                                1.2      APPSPACE_NAME                  DEV.substvar                   Running         Deployed          (1/1)

скриншот вывода powershell

Я хочу проанализировать этот вывод, чтобы получить значение «Версия» для приложения «ApplicationName2.app» (то есть: 1.2) и передать его в другой команде с помощью Powershell. У нас может быть n приложений, поэтому я смогу получить значение Version для соответствующего приложения. Может кто-нибудь, пожалуйста, дайте мне знать, как мы можем достичь этого?

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 14 января 2020

Если ваши выходные данные не имеют пробелов, вы можете сделать что-то вроде следующего, которое можно изменить, если ваши разделители данных могут быть предсказуемыми:

$apps = (bwadmin show application | Select-Object -Skip 5) -replace '\s+',',' |
    ConvertFrom-Csv -Header 'Name','Version','AppSpace','Profile','Status','Deployment Status','(Running/Total)'
$apps

# Output
Name              : ApplicationName1.app
Version           : 1.1
AppSpace          : APPSPACE_NAME
Profile           : DEV.substvar
Status            : Running
Deployment Status : Deployed
(Running/Total)   : (1/1)

Name              : ApplicationName2.app
Version           : 1.2
AppSpace          : APPSPACE_NAME
Profile           : DEV.substvar
Status            : Running
Deployment Status : Deployed
(Running/Total)   : (1/1)

Если вы хотите перечислить только имя приложения и версия, вы можете сделать следующее:

$apps | Select-Object Name,Version

#Output
Name                 Version
----                 -------
ApplicationName1.app 1.1
ApplicationName2.app 1.2

Если вы хотите найти версию приложения, вы можете сделать следующее:

$apps | Where Name -eq 'ApplicationName2.app' | Select -Expand Version

#Output
1.2
0 голосов
/ 14 января 2020

При условии отсутствия пробелов в каждом столбце. Если столбцы всегда находятся в одном и том же месте, см. Преобразовать текстовый файл фиксированной ширины в CSV / set-content или out-file -append?

whatever.exe | select -Skip 5 | foreach { (-split $_)[1] }


1.1
1.2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...