Я запускаю команду dos в PowerShell и получаю правильный вывод. Но я хочу захватить и обработать вывод.

Пример:

PS:>cmd.exe bpclimagelist.exe -t FULL
Backed Up         Expires       Files      KB     C Sched Type      Policy
----------------  ---------- -------- ----------- - --------------- ------------
08/25/2018 00:03  11/25/2018   179940    88589741 N Full Backup     WIN-01

Я хочу получить резервные даты из таблицы. Есть ли способ добиться этого?

1 ответ1

0

Вам не нужно вызывать cmd.exe для запуска исполняемого файла в консоли PS.

Если вы передадите по конвейеру вывод вашего исполняемого файла, вы можете иметь его в виде массива и начать манипулировать им.

Чтобы пройти строки вывода по очереди:

PS:>bpclimagelist.exe -t FULL | Foreach-Object{ Write-Host $_ }; 

Вы можете создать переменную типа массива и работать с ней. Подобно:

PS:>$a = bpclimagelist.exe -t FULL; Write-Host $a[2]; 

распечатает:

08/25/2018 00:03  11/25/2018   179940    88589741 N Full Backup     WIN-01

Если вашего исполняемого файла нет в PATH и / или он содержит пробел, вам следует использовать оператор вызова (&) и заключить в кавычки исполняемый файл.

PS:>$a = &'C:\BCP Program Folder\bpclimagelist.exe' -t FULL; Write-Host $a[2];

Некоторые более информация.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .