我在我的 PowerShell 脚本中使用了一些 GIT 命令。大多数时候我通过调用 GIT 命令Invoke-Expression
,例如
- 可以解析输出,或/和
- 将输出转发到日志记录方法。
在某些 GIT 命令中,我认识到并非所有输出都通过Invoke-Expression
文档状态返回:
输出
PS对象
返回由调用的命令生成的输出(Command 参数的值)。
这是一个例子:
> $x = iex "git fetch --all"
remote: Enumerating objects: 7, done.
remote: Counting objects: 100% (7/7), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 4 (delta 3), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (4/4), done.
内容$x
:
> $x
Fetching origin
Fetching upstream
所以主要信息不返回$x
。我无法想象这git fetch --all
是通过stderr
(没有意义......)返回主要信息。
我还发现了这个 PowerShell question,没有答案,使用的 PowerShell 版本是 2。
使用的 PowerShell 版本:
> $PSVersionTable
Name Value
---- -----
PSVersion 6.2.0
PSEdition Core
GitCommitId 6.2.0
OS Microsoft Windows 10.0.18362
Platform Win32NT
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0…}
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
WSManStackVersion 3.0
如何强制Invoke-Expression
返回整个输出?
谢谢