PDA

Показать полную графическую версию : [решено] Циклирование скрипта


alado
05-01-2015, 00:17
Добрый день.
Помоги построить цикл, я без 5 минут как в powershell. Я пробовал использовать while не получилось, работает он так: ждет до определенного значения батареи и потом отсылает, но больше не работает :( получается что цикл как бы на раз... Пробовал реализовать через for и do успехов тоже не принесло.

Оригинал кода такой:
$bat = $(Get-WmiObject win32_battery).estimatedChargeRemaining

if ($bat -cle 35)
{
$message = New-Object System.Net.Mail.MailMessage $From, $To
$message.Subject = $subject
$message.IsBodyHTML = $true
$message.Body = $body
$smtp = New-Object System.Net.Mail.SmtpClient($SMTPServer, $SMTPPort)
$smtp.EnableSSL = $true
$smtp.Credentials = New-Object System.Net.NetworkCredential($Username, $Password)
$smtp.Send($message)
Start-Sleep -Seconds 60
}
else
{
}


Мои попытки с while:

$bat = $(Get-WmiObject win32_battery).estimatedChargeRemaining
$a = 0
While ($a -le 5)
{
if ($bat -cle 35)
{
$message = New-Object System.Net.Mail.MailMessage $From, $To
$message.Subject = $subject
$message.IsBodyHTML = $true
$message.Body = $body
$smtp = New-Object System.Net.Mail.SmtpClient($SMTPServer, $SMTPPort)
$smtp.EnableSSL = $true
$smtp.Credentials = New-Object System.Net.NetworkCredential($Username, $Password)
$smtp.Send($message)
#5 minutes (300)
Start-Sleep -Seconds 60
}
else
{
}
}
}

Так же пробовал через true сделать:

$bat = $(Get-WmiObject win32_battery).estimatedChargeRemaining
While ($true)
{
if ($bat -cle 35)
{
$message = New-Object System.Net.Mail.MailMessage $From, $To
$message.Subject = $subject
$message.IsBodyHTML = $true
$message.Body = $body
$smtp = New-Object System.Net.Mail.SmtpClient($SMTPServer, $SMTPPort)
$smtp.EnableSSL = $true
$smtp.Credentials = New-Object System.Net.NetworkCredential($Username, $Password)
$smtp.Send($message)
#5 minutes (300)
Start-Sleep -Seconds 60
}
else
{
}
}

Kazun
05-01-2015, 00:49
While ($true)
{
if ($bat -cle 35)
{
$smtp.Send($message)
}

Start-Sleep -Seconds 60
$bat = $(Get-WmiObject win32_battery).estimatedChargeRemaining
}




© OSzone.net 2001-2012