about_If
Krótki opis
Opisuje polecenie języka, którego można użyć do uruchamiania list instrukcji na podstawie wyników co najmniej jednego testu warunkowego.
Długi opis
Możesz użyć instrukcji If
, aby uruchomić bloki kodu, jeśli określony test warunkowy zwróci wartość true. Można również określić co najmniej jeden dodatkowy test warunkowy do uruchomienia, jeśli wszystkie wcześniejsze testy będą oceniać wartość false. Na koniec możesz określić dodatkowy blok kodu, który jest uruchamiany, jeśli żaden inny wcześniej test warunkowy nie zwróci wartości true.
Składnia
W poniższym przykładzie przedstawiono składnię instrukcji If
:
if (<test1>)
{<statement list 1>}
[elseif (<test2>)
{<statement list 2>}]
[else
{<statement list 3>}]
Po uruchomieniu instrukcji If
program PowerShell ocenia wyrażenie warunkowe <test1>
jako true lub false. Jeśli <test1>
parametr ma wartość true, <statement list 1>
uruchamia i program PowerShell kończy instrukcję If
. Jeśli <test1>
ma wartość false, program PowerShell oblicza warunek określony przez instrukcję warunkową <test2>
.
Aby uzyskać więcej informacji na temat oceny logicznej, zobacz about_Booleans.
Jeśli <test2>
parametr ma wartość true, <statement list 2>
uruchamia i program PowerShell kończy instrukcję If
. Jeśli obie metody <test1>
i <test2>
mają wartość false, <statement list 3
> blok kodu zostanie uruchomiony, a program PowerShell zakończy działanie instrukcji If.
Za pomocą wielu Elseif
instrukcji można utworzyć łańcuch serii testów warunkowych. Dlatego każdy test jest uruchamiany tylko wtedy, gdy wszystkie poprzednie testy są fałszywe. Jeśli musisz utworzyć instrukcję zawierającą If
wiele Elseif
instrukcji, rozważ użycie instrukcji Switch.
Przykłady:
Najprostsza If
instrukcja zawiera jedno polecenie i nie zawiera żadnych instrukcji Elseif ani żadnych instrukcji Else. Poniższy przykład przedstawia najprostszą formę instrukcji If
:
if ($a -gt 2) {
Write-Host "The value $a is greater than 2."
}
W tym przykładzie, jeśli zmienna $a jest większa niż 2, warunek daje wartość true, a lista instrukcji zostanie uruchomiona. Jeśli jednak $a jest mniejsza lub równa 2 lub nie jest istniejącą zmienną, If
instrukcja nie wyświetla komunikatu.
Dodając instrukcję Else, komunikat jest wyświetlany, gdy $a jest mniejsza lub równa 2. W następnym przykładzie pokazano:
if ($a -gt 2) {
Write-Host "The value $a is greater than 2."
}
else {
Write-Host ("The value $a is less than or equal to 2," +
" is not created or is not initialized.")
}
Aby jeszcze bardziej uściślić ten przykład, możesz użyć instrukcji Elseif, aby wyświetlić komunikat, gdy wartość $a jest równa 2. W następnym przykładzie pokazano:
if ($a -gt 2) {
Write-Host "The value $a is greater than 2."
}
elseif ($a -eq 2) {
Write-Host "The value $a is equal to 2."
}
else {
Write-Host ("The value $a is less than 2 or" +
" was not created or initialized.")
}
Używanie składni operatoraternary
Program PowerShell 7.0 wprowadził nową składnię przy użyciu operatoraternary. Jest zgodna ze składnią operatorów ternary języka C#:
<condition> ? <if-true> : <if-false>
Operatorternary zachowuje się jak instrukcja uproszczona if-else
. Wyrażenie <condition>
jest obliczane, a wynik jest konwertowany na wartość logiczną, aby określić, która gałąź powinna zostać obliczona w następnej kolejności:
- Wyrażenie
<if-true>
jest wykonywane, jeśli<condition>
wyrażenie ma wartość true - Wyrażenie
<if-false>
jest wykonywane, jeśli<condition>
wyrażenie ma wartość false
Na przykład:
$message = (Test-Path $path) ? "Path exists" : "Path not found"
W tym przykładzie wartość $message
to "Ścieżka istnieje", gdy Test-Path
zwraca wartość $true
. Gdy Test-Path
funkcja zwraca $false
wartość , to $message
"Ścieżka nie została znaleziona".
$service = Get-Service BITS
$service.Status -eq 'Running' ? (Stop-Service $service) : (Start-Service $service)
W tym przykładzie, jeśli usługa jest uruchomiona, jest zatrzymana i jeśli jej stan nie jest uruchomiony, jest uruchomiony.