我想在PowerShell脚本中通过设置标志输出变量和值,并在整个脚本中查看数据录取。
我该怎么做呢?
例如,PowerShell与下面的PHP代码有什么等价之处?
echo "filesizecounter: " . $filesizecounter
PowerShell是插补的,不是吗?
在PHP中
也可以写成:
echo "filesizecounter: $filesizecounter"
在PowerShell中,这样的东西应该适合您的需求:
Write-Host "filesizecounter: $filesizecounter"
有几种方法:
Write-Host:直接写入控制台,不包含在function/cmdlet输出中。允许设置前景色和背景色。
Write-Host
Write-Debug:如果$DebugPreference设置为Continue或Stop,则直接写入控制台。
Write-Debug
$DebugPreference
Write-Verbose:如果$VerbosePreference设置为Continue或Stop,则直接写入控制台。
Write-Verbose
$VerbosePreference
后者用于额外的可选信息,Write-Debug用于调试(因此似乎适合这种情况)。
额外的:在PSH2(至少)脚本中,使用cmdlet绑定将自动获得-Verbose和-Debug开关参数,本地启用Write-Verbose和Write-Debug(即覆盖首选项变量),就像编译的cmdlet和提供程序所做的那样。
-Verbose
-Debug
Write-Host "filesizecounter : " $filesizecounter
Powershell有一个别名映射echo到Write-Output,所以你可以使用:
echo
Write-Output
echo "filesizecounter : $filesizecounter"
到目前为止,在powershell中最简单的方法是创建字符串对象,让管道输出它:
$filesizecounter = 8096 "filesizecounter : $filesizecounter"
当然,当不使用Write-*方法时,您确实放弃了一些灵活性。
尝试Get-Content .\yourScript.PS1,你会看到你脚本的内容。
Get-Content .\yourScript.PS1
你也可以在你的代码中插入这一行:
get-content .\scriptname.PS1 script code script code
....
echo是写输出的别名,尽管它看起来和Write-Host一样。
它不是 PowerShell中echo和Write-Host的区别是什么?< / >。
echo是Write-Output的别名,它写入Success输出流。这允许通过管道处理输出或重定向到文件中。Write-Host直接写入控制台,因此输出不能再被重定向/处理。
我不知道这样做是否明智,但你可以写
"filesizecounter: " + $filesizecounter
它应该输出:
filesizecounter:价值
写主机工作正常。
$Filesize = (Get-Item $filepath).length; Write-Host "FileSize= $filesize";
PowerShell为一些常见命令提供别名,如echo。在PowerShell中输入以下内容:
Get-Alias echo
要得到回复:
CommandType Name Version Source ----------- ---- ------- ------ Alias echo -> Write-Output
即使Get-Alias也有一个别名gal -> Get-Alias。你可以写gal echo来获得echo的别名。
gal -> Get-Alias
gal echo
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批处理命令:
echo on
Set-PSDebug -Trace 1
该命令将显示正在执行的脚本的每一行:
当Trace参数的值为1时,脚本的每一行都会在运行时被跟踪。当参数的值为2时,变量赋值、函数调用和脚本调用也会被跟踪。如果指定了Step参数,在运行脚本的每一行之前都会提示您。
Trace
1
2
Step