Powershell 4写作进展

时间:2014-07-04 12:41:33

标签: powershell powershell-v3.0

我正在尝试使用[System.Net.DNS]从一个很好的IP列表中运行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并让它从倒数第一个倒数就会很好。

1 个答案:

答案 0 :(得分:2)

我无法理解您的剧本。

  • 什么是$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++

}