【问题标题】:Powershell 4 Write-ProgressPowershell 4 写入进度
【发布时间】:2014-07-04 21:34:54
【问题描述】:

我正在尝试使用 [System.Net.DNS] 从...好吧,IP 的 loooong 列表中运行 IP 检查。 这很好用,但是我想在上面放一个简单的进度条。无论是秒数还是百分比... 不在乎。我只想显示一个漂亮的进度条并告诉我需要等待多长时间。

$colComputers = get-content $File
foreach ($strComputer in $colComputers)
{
$IP = try {$dnsresult = [System.Net.DNS]::GetHostEntry($strComputer)} `
catch {$dnsresult = "Fail"}
$IP

for ($IP=100; $IP -gt 1; $IP--) {
  Write-Progress -Activity "Working..." `
   -SecondsRemaining $IP `
   -Status "Please wait."
}

脚本运行良好,只是卡在这个进度条上。 我在想,如果可以确定列表包含多少个 IP 并让它从最后一个倒数到第一个,那就太好了。

【问题讨论】:

    标签: powershell powershell-3.0


    【解决方案1】:

    我无法理解您的脚本。

    • 什么是$IP = try { }
    • 你输出$IP(我虽然总是为空),为什么?。
    • 你从不使用$dnsresult ..
    • 我什至不确定该进度条将如何帮助任何人.....
    • 您确实需要使您的代码更具可读性。避免“转义换行符”。

    这是你想要做的吗?

    $colComputers = @(get-content $File)
    $count = $colComputers.Count
    $i = 1
    foreach ($strComputer in $colComputers)
    {
    
        #Write-Progress needs -percentagecomplete to make the progressbar move
        Write-Progress -Activity "Working... ($i/$count)" -PercentComplete ($i/$colComputers.Count*100) -Status "Please wait."
    
        #What is IP = try { } :S
        try {
            $dnsresult = [System.Net.DNS]::GetHostEntry($strComputer)
        }
        catch {
            $dnsresult = "Fail"
        }
    
        #Do something with $dnsresults...
    
        #Increase counter i
        $i++
    
    }
    

    【讨论】:

    • 嗯,我修改了脚本,希望能让进度条正常工作.. :-) 有了你的修改,它就像一个魅力,非常感谢!我的帖子被编辑了,但它清楚地表明我是一个有进度条的新手:-P
    猜你喜欢
    • 1970-01-01
    • 2012-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多