我从一位突然离开公司的开发人员那里继承了一堆powershell脚本。虽然我能够遵循脚本的逻辑,但许多命令都是重复的,如下所示:
"cd " + $targetDirectory
cd $targetDirectory
"hg pull"
& hg pull
"hg revert --all"
& hg revert --all
"hg up default"
& hg up default
第一个始终包含引号,第二个具有某种powershell语法。
复制命令的目的是什么,即它实现了什么?
答案 0 :(得分:3)
我认为这是相当糟糕的做法。从本质上讲,这只是创建一个包含正在运行的命令的字符串,并将其发送到输出流,您可能会在控制台中看到它。然后它执行实际命令。
这就像必须手动回显所有内容。字符串(如果必须发送到控制台)应与Write-Host
或(在我看来)Write-Verbose
一起发送,以便它们不再是输出流的一部分。
在您自己的脚本中,您可以使用Set-PSDebug -Trace 1
(感谢Χpẘ)。
在PowerShell的较新版本中,有一些方法可以将任何PowerShell会话中的每个命令运行(即使您无法访问正在运行的代码)记录到事件日志中。我现在很难找到一篇好的文章链接,但可能值得一试。
答案 1 :(得分:2)
这只是为了在控制台中输出正在运行的命令,就像它在运行之前一样,几乎就像调试消息一样。