Как я могу получить информацию консоли PowerShell для отображения в командном окне при ее выполнении из пакетного файла (.cmd)? - PullRequest
0 голосов
/ 28 мая 2020

У меня есть сценарий PowerShell, который имеет действительно хороший статус консоли и информацию о ходе выполнения (с использованием Write-Host), когда я запускаю его из PowerShell ISE. Однако сценарий обычно вызывается файлом пакетной команды (.cmd) как часть более крупного процесса.

В настоящее время я вызываю Script1.ps1 из Command1.cmd следующим образом:

FOR /f "delims= USEBACKQ" %%i in (`powershell.exe -file "C:\Powershell\Script1.ps1" -_Parm1 "!_Parm1!" -_Parm2 "!_Parm2!"`) DO SET ResponseMessage=%%i 
FOR /f "tokens=1,2 delims=;" %%i in ("!ResponseMessage!") DO SET "ReturnCode=%%i" &SET "ResponseMessage=%%j"
IF !ReturnCode! NEQ 0 (
    @ECHO Error in Script1.ps1. ReturnCode=!ReturnCode!. ResponseMessage=!ResponseMessage!
    EXIT /B !ReturnCode!
)

Он работает отлично, но я не вижу никакой информации о состоянии Write-Host из Script1 .ps1, за исключением последнего, который я разбираю на код возврата и сообщение.
Я хотел бы видеть всю информацию о состоянии Write-Host в командном окне во время его выполнения. Я подозреваю, что Write-Host - не тот командлет, который мне нужен. Но я не смог заставить что-либо работать.

Вот отредактированный образец вывода консоли Script1.ps1, но он может обрабатывать множество файлов и сотни записей в каждом. Мне не нужно извлекать какую-либо конкретную часть, я хотел бы, чтобы она отображалась поэтапно полностью.

:::Parms
 [Redacted] 
:::OpenSQL 
:::Backing up DB
 [Redacted] 
:::Processing Files
 [Redacted] 
  File Dev.Script1_Input3.xml 
  NameQuery: Dev.Script1_Input3
  Count: 15
  Updating... 
     10%... 
     20%... 
     30%... 
     40%... 
     50%... 
     60%... 
     70%... 
     80%... 
     90%... 
     100% !
  Recs Added....: 3 
  Recs Updated..: 12 
  Done. 

  All data files processed. 
  Files Processed: 3 
  [Redacted]
...