У меня есть сценарий 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]