我想在PowerShell脚本中通过设置标志输出变量和值,并在整个脚本中查看数据。

我该怎么做呢?

例如,PowerShell与下面的PHP代码有什么等价之处?

echo "filesizecounter: " . $filesizecounter 

当前回答

有几种方法:

Write- host:直接写入控制台,不包括在function/cmdlet输出中。允许设置前景色和背景色。

写调试:如果$DebugPreference设置为继续或停止,则直接写入控制台。

Write- verbose:如果$VerbosePreference设置为继续或停止,则直接写入控制台。

后者用于提供额外的可选信息,Write-Debug用于调试(因此似乎适合这种情况)。

附加:在PSH2(至少)脚本中,使用cmdlet绑定将自动获得-Verbose和-Debug开关参数,本地启用Write-Verbose和Write-Debug(即覆盖首选项变量),就像编译的cmdlet和提供者所做的那样。

其他回答

有几种方法:

Write- host:直接写入控制台,不包括在function/cmdlet输出中。允许设置前景色和背景色。

写调试:如果$DebugPreference设置为继续或停止,则直接写入控制台。

Write- verbose:如果$VerbosePreference设置为继续或停止,则直接写入控制台。

后者用于提供额外的可选信息,Write-Debug用于调试(因此似乎适合这种情况)。

附加:在PSH2(至少)脚本中,使用cmdlet绑定将自动获得-Verbose和-Debug开关参数,本地启用Write-Verbose和Write-Debug(即覆盖首选项变量),就像编译的cmdlet和提供者所做的那样。

Powershell有一个别名映射echo到Write-Output,所以你可以使用:

echo "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://learn.microsoft.com/en-us/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:

Set-PSDebug -Trace 1

该命令将显示正在执行的脚本的每一行:

当Trace参数的值为1时,脚本的每一行都在运行时被跟踪。当参数值为2时,变量赋值、函数调用和脚本调用也会被跟踪。如果指定了Step参数,在运行脚本的每一行之前都会收到提示。

到目前为止,在powershell中最简单的方法是创建字符串对象,让管道输出它:

$filesizecounter = 8096
"filesizecounter : $filesizecounter"

当然,当不使用Write-*方法时,您确实放弃了一些灵活性。