将 git 命令记录到 Powershell 脚本中的奇怪差异

2024-01-17

See 这个问题 https://stackoverflow.com/questions/58942723/powershell-transcript-is-not-capturing-git-output/58943306了解我试图理解的行为的完整背景。

我的理解Start-Transcript是一旦启动,所有输出流都会记录到 Powershell 转录本中。我可以写入流 1-6,并且仍然希望在我的转录日志中看到输出。然而,在我上面链接的问题中,我看到了一些围绕这个的奇怪现象,我无法解释,并且想了解为什么在这种情况下输出被吞没,而在那个OP的情况下,我们每个人都看到了不同的行为。

基本上,OP 试图记录git clone | Out-Default到他们的成绩单日志中,并且没有将任何内容记录到成绩单中。对他们有用的解决方案是设置一个环境变量git写给stdout代替stderr。 OP 后来表示,他们曾尝试用管道输送git命令到Out-Default看看它是否有所作为,但事实并非如此,所以他们的解决方案似乎是“git输出到 stderr 并且不会被捕获Start-Transcript.

然而,我的经历有所不同。我没有git配置为重定向stderr to stdout,并且可以通过尝试将 git 命令的输出分配给变量来确认这一点(正如我所期望的那样,这不起作用)。但我可以简单地打电话Start-Transcript,然后调用git status,并查看它是否记录到记录中。然而,当我跑步时git status | Out-Default,我将输出发送到控制台,但未记录到记录中。去除Out-Default对我来说似乎是解决方案,但对OP来说不是。

我不知道这里发生了什么。在我的系统上,管道似乎git命令,并且仅git命令,至Out-Default不允许将输出记录到记录中。我已经用它们测试了其他外部程序stderr输出并将输出通过管道传输到Out-Default仍然允许转录输出。但不是git blah | Out-Default。我仍然不明白为什么另一个问题的OP需要重定向stderr to stdout,但我没有。


你正在看到一个bug在以下条件下表面:

  • 转录(以Start-Transcript) 正在进行

  • an 外部程序(例如git) 被调用,并且它(也)输出到stderr(标准错误流)。

  • 外部程序调用通过管道传送到Out-Default.

The stderr output is then unexpectedly not recorded in the transcript.[1]

该问题已报告于这个 GitHub 问题 https://github.com/PowerShell/PowerShell/issues/11134,但值得注意的是:

  • There's 没有理由打电话Out-Default在这种情况下,因为默认情况下,记录会记录外部程序的 stdout 和 stderr 输出。

  • There's 一般来说没有理由打电话Out-Default来自用户代码;它被设计为由 PowerShell 主机应用程序调用。

See 这个答案 https://stackoverflow.com/a/58958346/45375了解更多信息。


[1] Note that stderr output from external programs is generally treated differently than error output from PowerShell commands: unless redirected, stderr lines are printed to the display by default, without touching PowerShell's error stream (and therefore also without being recorded in $Error), because stderr cannot generally be assumed to represent errors, given that many programs - including git - use it to write status information too.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 git 命令记录到 Powershell 脚本中的奇怪差异 的相关文章

  • Git-svn:批量删除孤立的远程分支

    我正在处理的 SVN 项目 通过 git svn 有经常创建的分支 然后与主干重新集成 然后删除 现在项目大约有10个分支没有被删除 但是在git中 gitbranch r显示大约有50个 我可以一次删除这些 检查它们是否仍然存在于 svn
  • 无法快速删除 Git 中的许多文件

    我删除了 Git 分支中的 777 个文件新功能 by rm example 我愿意承诺 Git 要求我手动删除每个已删除的文件 git rm file 对于所有名称不相似的 777 个文件 编写上述命令将花费大量时间 如何删除我的 Git
  • 如何克隆没有提交的裸 git 存储库并在克隆过程中获取正确的 HEAD 引用?

    这个答案 https stackoverflow com a 26898059 438273声称该问题已在版本中修复1 8 4 3 但是我在版本中还是遇到了2 25 1 它似乎在版本中按预期工作2 32 0 所以我不确定它是什么时候真正修复
  • 如何正确设置 Azure DevOps 和 GitHub 之间的双向同步

    我想通过执行以下操作在 Azure DevOps 和 GitHub 之间创建双向同步 使用 CI 触发器创建 Azure DevOps 管道 将更改从 Azure DevOps 存储库推送到 GitHub 中的分支 创建第二个管道 用于侦听
  • 如何忽略警告错误?

    我有以下 PowerShell 脚本 它获取给定 IP 地址内计算机的 NetBIOS 名称 我正在使用管道将结果转储到文本文件中 问题是 如果 IP 地址不可用 则会打印警告 这是 PowerShell 脚本 function Get C
  • PowerShell Trim 字符串包含“< char >$”的错误?

    如果我使用Trim 包含字符串的方法 char repeated char 例如 BL LA 或 LA AB Trim 删除之后的重复字符 以及 例如 a BL LA b a Trim BL returns A not LA but a B
  • 如何更新我的裸存储库?

    我创建了一个裸存储库来发布我的存储库 但我不知道如何使用主存储库的当前状态更新裸存储库 如果您想复制主存储库中的所有对象 请在主存储库中执行此操作 git push all
  • SQL Server 2008:如何使用 powershell 获取“消息”选项卡(在 Management Studio 中)输出

    我在用invoke sqlcmd管理我的数据库 它工作得很好 我将 Management Studio 中 结果 选项卡的输出保存到日志文件中 当我做一个BACKUP DATABASE 输出是在 消息 选项卡上完成的 我想将其保存在日志文件
  • Powershell:根据属性过滤属性

    我对 PowerShell 的自学经验有限 所以这可能是一些基本的东西 但我似乎无法正确理解 我在 Active Directory 中 需要提取电子邮件地址不以 SamAccountName 开头的用户列表 因此 如果您的登录名是 jdo
  • Git 查找第一个非本地提交

    有关的 列出尚未推送到源的 Git 提交 https stackoverflow com questions 3080509 list git commits not pushed to the origin yet git rev par
  • 替换 CSV 文件中的引号和特殊字符的一些难题

    我在处理一些需要清理并加载到数据库中的 CSV 文件时遇到了一些难题 我相当擅长使用 PowerShell 但不擅长正则表达式和 csv 列操作 这是我遇到的问题 我正在使用的 CSV 文件中有一个 注释 字段 可以包含各种不同的字符 主要
  • 从输出中删除空行

    我有这个脚本 for true Write Host Get Date UFormat Y m d H M S ping n 1 10 10 50 203 Select String SimpleMatch Pinging Context
  • 使用 powershell 编辑 XML

    好吧 我感觉自己像个大白痴 为了工作中的管理目的 我使用 Powershell 已经有一段时间了 也就是说 编写脚本不是我的强项 现在 我正在尝试编写一个 PS 脚本 将一个部分添加到一堆机器上的 XML 中 以添加设置来解决我们在某个应用
  • 竹子 - 构建我的拉取请求

    当拉取请求进入 git 时 我试图触发竹子中的构建 我可以将 webhook 信息发送到竹子 但它不是构建适当的 sha 标记的签入 而是构建 主 分支 这是否需要对竹子进行一些自定义 git 设置 到目前为止我还没有看到任何简单的事情 在
  • 使用 powershell 版本 2 查询 AD

    我们有由 Windows 7 和 Windows 10 组成的混合桌面操作系统 我有一个登录脚本 该脚本从每次用户登录时运行的 powershell 脚本收集各种信息 Windows 7 powershell 仅是版本 2 这意味着我无法使
  • 我是否需要在裸仓库上运行 git gc ?

    man git gc http www kernel org pub software scm git docs git gc html其中没有明显的答案 而且我在谷歌上也没有任何运气 尽管我可能只是使用了错误的搜索词 我明白你应该偶尔跑步
  • 通过 cron 进行 git 推送

    我正在尝试运行git push来自 cron 当我在 shell 上以交互方式执行命令时 一切顺利 从我的用户的 crontab 运行命令时 cron 会传递错误消息 Permission denied publickey 我认为这与查找或
  • git 如何在不同分支中保持不同的配置文件?

    请允许我先表达一下我的尝试 假设我有两个分支 Alice1 和 Alice2 Alice1 有自己的服务器 Alice2 也有自己的服务器 我希望能够签出 Alice1 编写我的代码 然后通过使用保存在 URL 配置文件中的 URL 直接推
  • 抑制数组列表添加方法管道输出

    我正在使用数组列表来构建日志项序列以供稍后记录 工作起来很不错 但是 Add 方法将当前索引发送到管道 我可以通过将其发送到 null 来解决这个问题 如下所示 strings Add junk gt null 但我想知道是否有某种机制可以
  • 如何将 GitHub PR 的代码与其他分支的 PR 代码分开?

    我正在开发一个项目并解决问题 我正在为每个拉取请求 PR 创建一个不同的分支 上次我用他们的 PR 创建了两个不同的分支并解决了这两个问题 现在的问题是 我的两个拉取请求都与我在不同分支上推送的代码搞乱了 我借助以下命令在 git bash

随机推荐

  • 此处不应引用 Java 方法

    究竟如何使用 Java 8 链接实例的方法引用 例子 Collections sort civs Comparator comparing Civilization getStrategy getStrategLevel getStrate
  • 为什么继承的接口无法在通用上下文中转换为其基接口?

    我正在尝试在我的 C 项目中实现接口继承系统 但无法让它工作 这是一个简化版本 public interface BaseInterface public abstract class AbstractClass
  • UITableView 检测选定的单元格?

    我的应用程序中有多个 UITableView 是否有一种方法可以检测用户在该列中选择了哪个单元格 行 还可以通过编程方式取消选择单元格 行吗 Thanks 获取表当前选择的索引路径 NSIndexPath path tableView in
  • Magento 将控制器复制到本地

    当我复制一些core Mage Adminhtml Block 文件到local Mage Adminhtml Block 一切正常 但如果我将控制器复制到local Mage Adminhtml controllers 核心控制器仍然有效
  • 一对一的聊天记录,包括开火和打拳

    我已经在我的系统中安装了 open fire 通过使用邮递员工具我可以创建用户 通过使用 smack 我也可以将消息发送给其他用户 但问题是我不知道如何获取两个用户之间的聊天历史记录 这意味着如果我发送发件人和收件人用户名 我需要获取以前的
  • Javascript 中的简单 HTML 清理器 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个用 JavaScript 编写的简单 HTML 清理程序 它不需要 100 XSS 安全
  • CAShapeLayer 路径弹簧动画不“过度”

    我正在尝试使用 CASpringAnimation 对 CAShapeLayer 路径进行动画处理 预期的结果是形状之间的 变形 表现出 弹性 我有一个圆形和方形路径之间的基本代码示例 如下所示 但最终结果是一个弹簧动画 它不会 超出 最终
  • 如何让tinymce默认以纯文本粘贴

    谷歌搜索了数千次 没有人给出如何让 Tinymce 默认粘贴纯文本并在不单击 粘贴为文本 按钮的情况下删除任何格式的完整解决方案 关于如何实现它有什么想法吗 或者如何自动启用 粘贴为文本 按钮 谢谢 对于tinyMCE 3X 或4X 来说
  • 分割 html 标签

    div Hi HElP ME br p ok p p p div img class div b ok1 b div img class div p end p p p b b div I want to split this html c
  • 按 Enter 键退出 while 循环而不阻塞。我该如何改进这个方法?

    因此 我一直在阅读有关如何通过用户按 Enter 键退出 while 循环的一些内容 并得出以下结论 import sys select os switch 1 i 1 while switch 1 os system cls if os
  • 在选择选项中显示图像以供选择 -Django Python

    我正在开发一个项目 但我被困在订单页面上 在这里 我想在选项标签中显示产品图像列表 以便用户可以从所有图像中选择一张图像 或者可以上传图像 上传图像的功能正常工作 但选择不起作用 我想向用户显示图像 以便用户可以选择其中一张 模型 py c
  • javascript 输入只允许数字

    我使用这个代码并且它有效
  • 如何在 Javascript 中单击 标记时切换(隐藏/显示)表格

    我想显示和隐藏 切换 table onClick事件的 a 这是我的 a tag a href Login a 这是我的 Javascript 函数toggleTable hide a a table
  • 如何使用 Html.TextBoxFor 设置默认值?

    简单的问题 如果您使用 ASP NET MVC Framework 1 中的 Html Helper 则很容易在文本框上设置默认值 因为存在重载Html TextBox string name object value 当我尝试使用Html
  • ListView中自定义onInterceptTouchEvent

    我如何实现自定义onInterceptTouchEvent in a ListView给孩子的滚动优先权ListView一旦他们完成滚动 就将其返回给ListView 我想优先考虑内心的观点 尝试覆盖onInterceptTouchEven
  • 使用 WorkManager 的定期工作请求不起作用

    我正在尝试编写一个定期的 Workmanager 脚本 但它只是在我打开应用程序时运行 并且只运行一次 不是定期的 这是我的主要活动 public class MainActivity extends AppCompatActivity O
  • 为什么这个输入与另一个输入重叠?

    我在 Python 2 7 10 中创建了一个 TCP 服务器 一旦我输入我的用户名 它就会询问密码 而不是说 用户名 管理员 密码 管理员 it says 用户名 管理员 密码 昵称 昵称是密码后输入的 这是相关代码 def userna
  • 哪些 C++ 编译器已经支持 lambda?

    是否有 C 编译器已经支持C 0x http en wikipedia org wiki C 2B 2B0x lambda http en wikipedia org wiki Lambda calculus表达式 Visual Studi
  • 一些可重用代码的架构

    我正在编写一些小型 简单的应用程序 它们共享一个共同的结构 并且需要以相同的方式做一些相同的事情 例如日志记录 数据库连接设置 环境设置 并且我正在寻找一些构建这些应用程序的建议可重复使用的组件 该代码是用强静态类型语言编写的 例如 Jav
  • 将 git 命令记录到 Powershell 脚本中的奇怪差异

    See 这个问题 https stackoverflow com questions 58942723 powershell transcript is not capturing git output 58943306了解我试图理解的行为