我想通过设置标志并查看整个脚本中的数据来在PowerShell脚本中输出变量和值。
我该怎么做?
例如,相当于以下PHP代码的PowerShell将是什么?
echo "filesizecounter: " . $filesizecounter
我想通过设置标志并查看整个脚本中的数据来在PowerShell脚本中输出变量和值。
我该怎么做?
例如,相当于以下PHP代码的PowerShell将是什么?
echo "filesizecounter: " . $filesizecounter
Answers:
有几种方法:
Write-Host
:直接写入控制台,不包括在function / cmdlet输出中。允许设置前景色和背景色。
Write-Debug
:如果$DebugPreference
设置为“继续”或“停止” ,则直接写入控制台。
Write-Verbose
:如果$VerbosePreference
设置为“继续”或“停止” ,则直接写入控制台。
后者旨在提供额外的可选信息,Write-Debug
用于调试(因此似乎适合这种情况)。
其他:在PSH2中(至少),使用cmdlet绑定的脚本将自动获取-Verbose
和-Debug
切换参数,就像编译的cmdlet和提供程序一样,在本地启用Write-Verbose
和Write-Debug
(即覆盖优先级变量)。
Powershell具有别名映射回显到Write-Output
,因此:
echo "filesizecounter : $filesizecounter"
PowerShell插值,不是吗?
在PHP中
echo "filesizecounter: " . $filesizecounter
也可以写成:
echo "filesizecounter: $filesizecounter"
在PowerShell中,类似这样的东西应该适合您的需求:
Write-Host "filesizecounter: $filesizecounter"
echo是Write-Output的别名,尽管它看起来与Write-Host相同。
这是不是有什么PowerShell中的回声和写入主机之间的区别?。
echo是Write-Output的别名,它写入成功输出流。这允许通过管道处理输出或将其重定向到文件中。Write-Host直接写入控制台,因此无法进一步重定向/处理输出。
我不知道这样做是否明智,但您可以写
"filesizecounter: " + $filesizecounter
它应该输出:
filesizecounter:值
"filesizecounter: $filesizecounter"
更短。
PowerShell有几个常用命令的别名,例如echo
。在PowerShell中键入以下内容:
Get-Alias echo
得到回应:
CommandType Name Version Source
----------- ---- ------- ------
Alias echo -> Write-Output
甚至Get-Alias也有一个别名gal -> Get-Alias
。您可以编写gal echo
以获取的别名echo
。
gal echo
其他别名在此处列出:https : //docs.microsoft.com/zh-cn/powershell/scripting/learn/using-familiar-command-names?view=powershell-6
cat dir mount rm cd echo move rmdir chdir erase popd sleep clear h ps sort cls history pushd tee copy kill pwd type del lp r write diff ls ren
还应该提到的是,Set-PSDebug与老式的echo on
批处理命令类似:
Set-PSDebug -Trace 1
此命令将显示执行脚本的每一行:
当
Trace
参数的值为1时,将在脚本运行时跟踪脚本的每一行。当参数的值为2时,还将跟踪变量分配,函数调用和脚本调用。如果指定了Step参数,则会在脚本的每一行运行之前提示您。