Powershell:一些简单的编号

Powershell:一些简单的编号,powershell,Powershell,所以我想在运行powershell脚本时,在主机中显示一个简单的“这就是我们要做的事情”编号。我创建了以下内容来处理此问题: $musicList = Get-ChildItem "C:\Users\rlyons\Music" -Recurse -File | Select-Object FullName $outfile = @{} $num = 1 foreach ($sound in $musicList) { $file = $sound.FullName.ToString()

所以我想在运行powershell脚本时,在主机中显示一个简单的“这就是我们要做的事情”编号。我创建了以下内容来处理此问题:

$musicList = Get-ChildItem "C:\Users\rlyons\Music" -Recurse -File | Select-Object FullName
$outfile = @{} 
$num = 1
foreach ($sound in $musicList) {
    $file = $sound.FullName.ToString()
    $md5 = Get-FileHash $file -Algorithm MD5
    $outFile.$file += $md5.Hash
    Write-Output "Processed file $num"
    $num ++
}
这太棒了!但它给了我:

Processed file 1
Processed file 2
Processed file 3
Processed file 4
Processed file 5
等等。我想让屏幕在每次处理文件时都能清除,所以我只想看到写入主机的行末尾的文件处理更改数

我尝试在
$num++
之后以及在foreach循环的开始处添加好的旧
Clear Host
,但我得到的只是一条闪烁的线,有时还有一些部分不清晰的东西。是的,这取决于文件处理的速度,但我想知道这是否有诀窍?要使
处理过的文件
位持续显示在屏幕上,但数字是否向上递增

如果它没有清除屏幕,那么就更好了,这样您就可以看到以前写入的所有输出,但有这一行刷新吗?这可能吗


注意:我在VS Code、Powershell 5.1中尝试了这一点,根据注释,Write Progress更适合于此,因为它提供了您想要的输出,但不会影响脚本的实际输出流(例如,您可能编写的任何潜在后续命令返回的内容)

以下是您可能希望如何使用
写入进度
,该进度还将显示完成百分比:

$musicList = Get-ChildItem "C:\Users\rlyons\Music" -Recurse -File | Select-Object FullName
$outfile = @{} 
$num = 1
foreach ($sound in $musicList) {
    $file = $sound.FullName.ToString()
    $md5 = Get-FileHash $file -Algorithm MD5
    $outFile.$file += $md5.Hash
    Write-Progress -Activity "Processed file $num of $($musiclist.count)" -PercentComplete ($num / $musiclist.count * 100)
    $num ++
}

根据注释,
Write Progress
更适合于此,因为它提供您想要的输出,但不影响脚本的实际输出流(例如,您可能编写的任何潜在后续命令返回的内容)

以下是您可能希望如何使用
写入进度
,该进度还将显示完成百分比:

$musicList = Get-ChildItem "C:\Users\rlyons\Music" -Recurse -File | Select-Object FullName
$outfile = @{} 
$num = 1
foreach ($sound in $musicList) {
    $file = $sound.FullName.ToString()
    $md5 = Get-FileHash $file -Algorithm MD5
    $outFile.$file += $md5.Hash
    Write-Progress -Activity "Processed file $num of $($musiclist.count)" -PercentComplete ($num / $musiclist.count * 100)
    $num ++
}

尝试
编写进度
。omfg可能重复,为什么我没有想到这一点。我以前也使用过它…尝试
编写进度
。可能是omfg的重复,为什么我没有想到这一点。我以前也用过它…所以它工作得很好,除了不在VisualStudio代码中之外,这真是太可惜了!我会在他们的Git页面上发布。在ISE中按预期工作。这可能与清除主机功能实际上没有清除控制台的问题有关。脚本和git页面的后续工作都做得很好,所以除了不在VisualStudio代码中之外,它工作得非常完美,这真是太可惜了!我会在他们的Git页面上发布。在ISE中按预期工作。这可能与清除主机功能实际上没有清除控制台的问题有关。脚本和git页面的后续工作都做得很好