Булевы операторы Powershell - PullRequest
0 голосов
/ 01 мая 2018

Я ищу создание логического сценария, который оповещает, когда срок действия некоторых сертификатов истекает см. Пример электронной таблицы .

Я просматривал оповещения на срок более 90 дней, от 89 до 61 дня, от 60 до 31 дня и менее 30 дней. Оповещение не является серьезной проблемой сейчас.

Я понимаю, что мне понадобится больше, но я хочу помочь этой другой логике. Я ценю помощь людей!

$Alert = 'TakeAction'

  If ($Alert  -gt '90')  {

       Write-Host "Licenses or Certificate are fine"

  }  ElseIf ($Alert  -lt '89' -AND -gt'61')  {

       Write-Host "Please contact Vendor for updated Licenses or Certificate information"

  }  ElseIf ($Alert  -lt '60' -AND -gt'31')  {

       Write-Host "Action must be taken to update Licenses or Certificate from Vendor"

  }  

}  ElseIf ($Alert  -lt '30' -AND -gt'1')  {

       Write-Host "Immediate action must be taken for renewal of Licenses or Certificate!"

  }  

Else {

       Write-Host "Certificate Information N/A"

} 

Ответы [ 4 ]

0 голосов
/ 01 мая 2018

Аналогично TheMadTechnician, но более точно определяет диапазоны.

0..95|%{
    $Alert = $_
    switch ($Alert) {
        {1..30  -contains $_}   {"$_ Immediate action must be taken for renewal of Licenses or Certificate!" ;break}
        {31..60 -contains $_}   {"$_ Action must be taken to update Licenses or Certificate from Vendor" ;break}
        {61..90 -contains $_}   {"$_ Please contact Vendor for updated Licenses or Certificate information" ;break}
        {$_ -gt 90}             {"$_ Licenses or Certificate are fine" ;break}
        Default                 {"$_ Certificate Information N/A"}
    }
}
0 голосов
/ 01 мая 2018

Для нескольких условий switch это путь. Если вам нужны оповещения, я обычно использую Send-MailMessage для получения оповещения. Это установит [boolean]$sendMail = $true, чтобы оценить, следует ли отправлять электронное письмо (уведомление) или нет.

$certificateAge # = however you are getting your cert age
[boolean]$sendMail = $false
$message = @()
switch($certificateAge){
    {$_ -gt 90} 
    {
        $message = "Licenses or Certificate are fine"        
    }
    {$_ -lt 89 -and $_ -gt 61 } 
    {
        $message = "Please contact Vendor for updated Licenses or Certificate information"
        $sendMail = $true
    }
    {$_ -lt 60 -and $_ -gt 31 } 
    {
        $message = "Action must be taken to update Licenses or Certificate from Vendor"
        $sendMail = $true
    }
    {$_ -lt 30 -and $_ -gt 1 } 
    {
        $message = "Immediate action must be taken for renewal of Licenses or Certificate!"
        $sendMail = $true
    }    
    default{$message = "Certificate Information N/A"}
}


if($sendMail)
{
    Send-MailMessage -From CertAge@mail.com -To Admin@mail.com -SmtpServer mail.mail.com -Subject "Certificate information" -Body $message
}
0 голосов
/ 01 мая 2018
($Alert -lt '89' -AND -gt '61')

Вы не можете объединять такие операторы. Вам нужно иметь операнд с обеих сторон выражения.

Попробуйте это:

If ($Alert -gt '90') {
    Write-Host "Licenses or Certificate are fine"
}
ElseIf ($Alert -lt '89' -AND $Alert -gt '61') {
    Write-Host "Please contact Vendor for updated Licenses or Certificate information"
}
ElseIf ($Alert -lt '60' -AND $Alert -gt '31') {
    Write-Host "Action must be taken to update Licenses or Certificate from Vendor"
}
ElseIf ($Alert -lt '30' -AND $Alert -gt '1') {
    Write-Host "Immediate action must be taken for renewal of Licenses or Certificate!"
Else {
    Write-Host "Certificate Information N/A"
} 

Обратите внимание, что вы используете больше (-gt) и меньше (-lt) и не больше или равно (-ge) или меньше или равно (-le). Это похоже на возможную ошибку.

0 голосов
/ 01 мая 2018

Это тот случай, когда светит команда Switch. Он проверяет случай, и если true, выполнит связанный блок сценария. Когда в этом блоке сценария используется команда Continue, остальные случаи пропускаются для повторного тестирования.

Switch ($Alert){
  { $_ -gt 90}  {

       Write-Host "Licenses or Certificate are fine"
       Continue

  }
  { $_ -gt 61}  {

       Write-Host "Please contact Vendor for updated Licenses or Certificate information"
       Continue

  }  
  { $_ -gt 31 }  {

       Write-Host "Action must be taken to update Licenses or Certificate from Vendor"
       Continue

  }  
  { $_ -gt 1 }  {

       Write-Host "Immediate action must be taken for renewal of Licenses or Certificate!"
       Continue
  }  

    Default {

       Write-Host "Certificate Information N/A"
  }
} 
...