#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