小编pen*_*359的帖子

不要在从外部命令写入 stderr 时抛出 PowerShell 异常

当外部命令(例如 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)

git error-handling powershell

9
推荐指数
2
解决办法
1291
查看次数

从Invoke-WebRequest到屏幕的流输出

我正在尝试调用一个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实现此目的?

powershell curl

5
推荐指数
1
解决办法
646
查看次数

标签 统计

powershell ×2

curl ×1

error-handling ×1

git ×1