W tym przypadku administrator tworzył sobie narzędzie, które jednocześnie ma zrestartować pewną liczbę serwerów, a następnie pingiem sprawdzać, czy serwery odpowiadają i kolorować:
- na zielono – odpowiada
- na czerwono – nie odpowiada
- jeżeli nie odpowiedział na 4 ping pod rząd a potem zaczął odpowiadać, to zmiana koloru na żółty
Problemem było tylko jak uruchomić skrypt badający pingiem odpowiedzi serwerów tak, aby na raz restartować i pingować wiele serwerów, każdy w innym okienku. Ze skryptu wyrzucam logikę dotyczącą pingowania, skupiam się wyłącznie na jednoczesnym uruchomieniu większej liczby skryptów. Oto rozwiązanie:
Skrypt nr 2 (podrzędny, wykonujący czynność na danym serwerze):
echo „I’m $($args[0])”
Read-Host „Press ENTER to close”
Skrypt nr 1 (nadrzędny, wywołujący skrypty nr2)
$hosts=”One”,”Two”,”Three”
foreach($h in $hosts)
{
start -FilePath powershell.exe -ArgumentList „-f”, „.\script2.ps1”, $h
}
Polecenie Start lub Start-Process ma uruchomić powershell.exe przekazując do niego parametry:
- -f aby podać ścieżkę do skryptu nr 2, który ma być uruchomiony
- ścieżkę do skryptu nr 2
- wszystkie argumenty przyjmowane przez skrypt nr 2
Argumenty przekazujemy jako listę, czyli napisy porozdzielane przecinkami
Komentarze:
Dodatkowo w skrypcie nr dwa można dodać linijkę
$Host.UI.RawUI.WindowTitle = $args[0]
Co zmieni tytuł generowanych okienek – przydatne jak nas zasypie okienkami:)