powershell - 从批处理文件 (.cmd) 执行时,如何获取 PowerShell 控制台信息以显示在命令窗口中?
问题描述
我有一个 PowerShell 脚本,当我从 PowerShell ISE 运行它时,它具有非常好的控制台状态和进度信息(使用 Write-Host)。但是,脚本通常由批处理命令文件 (.cmd) 作为较大进程的一部分调用。
目前,我从 Command1.cmd 调用 Script1.ps1,如下所示:
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!
)
它工作得很好,但我没有看到任何来自 Script1.ps1 的 Write-Host 状态信息,除了最后一个,我将其解析为返回代码和消息。
我想在命令窗口执行时查看所有 Write-Host 状态信息。我怀疑 Write-Host 不是我想做的正确 cmdlet。但是,我无法得到任何工作。
这是 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]
解决方案
推荐阅读
- java - 如何在 Hibernate 中正确映射父子(同表)关系?
- sql-server - 从字符串转换日期和/或时间时转换失败。mule 4 批量插入 SQL Server 时出错
- python - python用户对函数的输入
- docker - 从 docker 上正在运行或停止的容器中获取镜像名称
- android - WorkManager 在设备和某些模拟器中未按预期工作
- python - 如何创建子流程“if else”条件
- python-3.x - PIN 猜谜游戏的 While 循环
- networking - TCP 连接的初始序列号 (ISN) 范围
- javascript - 使用 es6 语法处理从 Promise 返回的值 [已编辑]
- javascript - JavaScript 返回函数不正确的结果