init-session.ps1 在拒绝写入文件后报告成功,因为 Out-File 错误不是终止性的
作者: OthmanAdi创建于 2026年9月17日更新于 2026年9月17日
标签bughelp wantedgood first issue
□ 问题
init-session.ps1 ' 打印出创建任务-计划.md ' 和`规划文件已初始化! ' ,即使规划文件的编写被拒绝。 然后文件丢失, 而输出则声称成功 。
范围:Windows,既包括根模式,也包括命名-平面模式,但只有在目标目录拒绝写入时(一个ACL拒绝,一个只读的挂载,一个被锁定的文件). 在正常的可写工程中,文件会按预期创建 。
□ 如何复制
动力壳 mkdir 拒绝; cd 拒绝 icacls./deny"$v:USERNAME: (W)" 互联网档案馆的存檔,存档日期2013-12-21. .\scripts\ nit- session.ps1 ./取出:d"$v:USERNAME"
以pwsh 7.6.6和Windows PowerShell 5.1观察:红色 " 出行:进入路径.被拒绝 " ,然后是 " 创建任务 计划.md " 、 " 创建结果.md " 、 " 创建进度.md " 和 " 规划文件已初始化! " ,退出代码为0。 没有规划文件 。
原因:`技能/规划-与文件/书写/init-session.ps1'将每个模板写入`.出行-LiteralPath $Path-编码UTF8',然后无条件打印成功行。 `出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出
shell two 运行在“ set-e” 下, 因此在成功消息发出前, 方向调整失败中止 。
□ 建议修正
其中一个:
- 在`init-session.ps1'上方设置`$ErrorAction Preference = “Stop''(检查选择器周围现有的`try'/`catch'区块和证明电话是否仍然如所愿)。
- 在每次 " 出行 " / " 连续 " 电话中加上 " 错误行动停止 " ,或在每次写出之后加上 " 美元? " ,并在出口1中加上明确的信息。
在命名-计划模式下,失败的运行也不应该留下半初始化的计划目录,或者至少应该这么说.
回归测试可以拒绝在临时目录中以"icacls"(仅Windows,跳过别处)进行写入访问,并坚持非零退出代码而无成功行.
□ 来源
由v3.19.0发布审查(PRs #247,#248,#249)所发现. 原已存在的行为,不是由该释放引入的. 在将第250号议题分成每个议题之前作为第3项进行跟踪.内容来源: OthmanAdi/planning-with-files