在 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 的好文章,但它可能值得研究。
我从一位突然离开我们公司的开发人员那里继承了一堆 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 的好文章,但它可能值得研究。