在 Powershell 脚本中复制命令的目的是什么?

What is the purpose of duplicating commands in a Powershell script?

我从一位突然离开我们公司的开发人员那里继承了一堆 powershell 脚本。虽然我能够遵循脚本的逻辑,但许多命令都是重复的,如下所示:

"cd " + $targetDirectory
cd $targetDirectory

"hg pull"
& hg pull

"hg revert --all"
& hg revert --all

"hg up default"
& hg up default 

第一个始终包含引号,第二个具有某种 powershell 语法。

这样复制命令的目的是什么,即达到什么目的?

它只是为了在控制台中输出命令 运行,就在 运行 之前,几乎就像调试消息一样。

我认为这是相当糟糕的做法。本质上,这只是制作一个包含命令 运行 的字符串,并将其发送到输出流,您可能会在控制台中看到它。然后它执行实际的命令。

这就像必须手动回显所有内容。如果字符串必须发送到控制台,则应使用 Write-Host 或(在我看来)Write-Verbose 发送,这样它们就不再是输出流的一部分了。

在您自己的脚本中,您可以使用 Set-PSDebug -Trace 1(感谢 Χpẘ)。

尤其是在较新版本的 powershell 中,有一些方法可以将任何 powershell 会话中的每个命令 运行 记录到事件日志中(即使您无权访问代码 运行)。我目前无法找到 link 的好文章,但它可能值得研究。