当外部命令(例如 git)写入 stderr 时,PowerShell 会生成 NativeCommandError 异常。我想正常地看到输出和标准输出,类似于它在标准 UNIX/Linux 系统上的外观。此脚本需要运行许多本机命令,如果可能,我更喜欢不会给每个命令增加太多混乱和维护的解决方案。
在 Linux 上,可以这样检出分支:
$ git checkout devel
Branch 'devel' set up to track remote branch 'devel' from 'origin'.
Switched to a new branch 'devel'
Run Code Online (Sandbox Code Playgroud)
其中微妙的部分是,无论出于何种原因,最后一行都已写入 stderr。但是,git 的退出状态为零表示它成功了。在 PowerShell 下,我得到了这个:
PS> git checkout devel
Branch 'devel' set up to track remote branch 'devel' from 'origin'.
git : Switched to a new branch 'devel'
At line:1 char:1
+ git checkout devel
+ ~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (Switched to a new branch 'devel':String) …Run Code Online (Sandbox Code Playgroud) 我正在尝试调用一个Web请求,它将打印出一个纯文本流.它目前有效,但在请求完成之前不会产生任何输出.我试图找到一种方法来查看内容,一旦下线.我现在可以使用来自Linux盒子的curl命令,它会在生成后立即显示每行输出.PowerShell命令我试图使用它像这样:
Invoke-WebRequest -Body @{id=123} -Method POST -Uri http://server/run_command/
Run Code Online (Sandbox Code Playgroud)
Linux上相应的curl命令是:
curl -d id=123 -X POST http://server/run_command/ --no-buffer
Run Code Online (Sandbox Code Playgroud)
--no-buffer只有在将输出发送到另一个命令(如grep)时才需要该选项.如何使用PowerShell实现此目的?