Выполнение записи в Powershell 4

#powershell #powershell-3.0

#powershell #powershell-3.0

Вопрос:

Я пытаюсь выполнить проверку IP-адресов из огромного списка … ну, IP-адресов.. с [System.Net.DNS] Это отлично работает, однако я хочу поместить на это простой индикатор выполнения. Будь то секунды или проценты… На самом деле меня это не волнует. Я просто хочу, чтобы отображался хороший индикатор выполнения и сообщал мне, как долго мне нужно ждать.

 $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:

У меня проблемы с пониманием вашего сценария.

  • Что такое $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  

}
  

Комментарии:

1. Ну, я изменил сценарий в надежде заставить индикатор выполнения работать .. 🙂 С вашим изменением все сработало как по волшебству, большое спасибо, чувак! Мой пост был отредактирован, но в нем четко указано, что я новичок с индикаторами выполнения:-P