Как увеличить стоимость предметов в foreach - Powershell (IIS) - PullRequest
0 голосов
/ 21 апреля 2020

У меня есть небольшой скрипт для установки значения времени перезарядки для некоторых пулов приложений. Дело в том, что у меня есть около 190 элементов, и я предпочитаю использовать сценарий, а не делать это вручную.

Import-Module WebAdministration

#Getting all the AppPools
$pools = Get-ChildItem -Path IIS:\AppPools
$RestartTime = @("05:00", "15:00")


ForEach ($pool in $pools) 
{
    $app_pool = $pool.name

    # Delete all existing scheduled recycle items
    # Clear-ItemProperty IIS:\AppPools\$app_pool -Name Recycling.periodicRestart.schedule

    # Checking the actual value
    Write-Host $app_pool
    (Get-ItemProperty -Path IIS:\\AppPools\$app_pool -name recycling.periodicRestart.schedule.collection) | select value

    # Set the application pool to recycle at the time we want
    # New-ItemProperty -Path "IIS:\AppPools\$app_pool" -Name Recycling.periodicRestart.schedule -Value @{value=$RestartTime}

}

Я хочу перезапустить все пулы приложений в 5:00 и 15:00, но с увеличением спецификации c время для указанной c группы пулов приложений в эти времена. т.е.:

  • Пул приложений 1-20: 5:00 и 15:00
  • Пул приложений 21-40: 5:10 и 15:10
  • Приложение пул 41-60: 5:20 утра и 3:20 вечера * 10101 *

Я полностью застрял в этой части, и я не знаю, как это сделать

Может кто-нибудь бросить мне немного здесь помощь?

Заранее спасибо!

1 Ответ

1 голос
/ 21 апреля 2020

Вы можете сделать условие со счетчиком для l oop, вот моя идея

Import-Module WebAdministration

#Getting all the AppPools
$pools = Get-ChildItem -Path IIS:\AppPools
$RestartTime = @("05:00", "15:00")

$count = 0
ForEach ($pool in $pools) 
{
    $app_pool = $pool.name

    # Delete all existing scheduled recycle items
    # Clear-ItemProperty IIS:\AppPools\$app_pool -Name Recycling.periodicRestart.schedule

    if ($count -le 20){
        $RestartTime = @("05:00", "15:00")
    }
    elseif ($count -gt 20 -and $count -le 40) {
        $RestartTime = @("05:10", "15:10")
    } else {
        $RestartTime = @("05:20", "15:20")
    }
    $count++

    # Checking the actual value
    Write-Host $app_pool
    (Get-ItemProperty -Path IIS:\\AppPools\$app_pool -name recycling.periodicRestart.schedule.collection) | select value

    # Set the application pool to recycle at the time we want
    # New-ItemProperty -Path "IIS:\AppPools\$app_pool" -Name Recycling.periodicRestart.schedule -Value @{value=$RestartTime}

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...