Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Korte beschrijving
Beschrijft een taalopdracht die u kunt gebruiken om instructielijsten uit te voeren op basis van de resultaten van een of meer voorwaardelijke tests.
Lange beschrijving
U kunt de instructie If gebruiken om codeblokken uit te voeren als een opgegeven voorwaardelijke test waar oplevert. U kunt ook een of meer aanvullende voorwaardelijke tests opgeven die moeten worden uitgevoerd als alle voorgaande tests onwaar evalueren. Ten slotte kunt u een extra codeblok opgeven dat wordt uitgevoerd als geen enkele andere eerdere voorwaardelijke test waar is.
Syntaxis
In het volgende voorbeeld ziet u de syntaxis van de If-instructie:
if (<test1>)
{<statement list 1>}
[elseif (<test2>)
{<statement list 2>}]
[else
{<statement list 3>}]
Wanneer u een If-instructie uitvoert, evalueert PowerShell de <test1> voorwaardelijke expressie als waar of onwaar. Als <test1> waar is, wordt <statement list 1> uitgevoerd en sluit PowerShell de If-instructie af. Als <test1> onwaar is, evalueert PowerShell de voorwaarde die is opgegeven door de <test2> voorwaardelijke instructie.
Zie about_Booleans voor meer informatie over booleaanse evaluatie.
Als <test2> waar is, wordt <statement list 2> uitgevoerd en sluit PowerShell de If-instructie af. Als beide <test1> en <test2> evalueren naar onwaar, wordt het <statement list 3> codeblok uitgevoerd en verlaat PowerShell de If-instructie.
U kunt meerdere Elseif instructies gebruiken om een reeks voorwaardelijke tests te koppelen. Zodat elke test alleen wordt uitgevoerd als alle voorgaande tests onjuist zijn. Als u een If instructie wilt maken die veel Elseif instructies bevat, kunt u in plaats daarvan een Switch-instructie gebruiken.
Voorbeelden:
De eenvoudigste If instructie bevat een enkel commando en bevat geen Elseif-statements of Else-statements. In het volgende voorbeeld ziet u de eenvoudigste vorm van de If-instructie:
if ($a -gt 2) {
Write-Host "The value $a is greater than 2."
}
Als in dit voorbeeld de variabele $a groter is dan 2, wordt de voorwaarde waar en wordt de lijst met instructies uitgevoerd. Als $a echter kleiner is dan of gelijk is aan 2 of geen bestaande variabele is, wordt er geen bericht weergegeven in de If verklaring.
Door een Else-instructie toe te voegen, wordt een bericht weergegeven wanneer $a kleiner is dan of gelijk is aan 2. Zoals in het volgende voorbeeld wordt weergegeven:
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.")
}
Als u dit voorbeeld verder wilt verfijnen, kunt u de Elseif-instructie gebruiken om een bericht weer te geven wanneer de waarde van $a gelijk is aan 2. Zoals in het volgende voorbeeld wordt weergegeven:
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.")
}
De syntaxis van de ternaire operator gebruiken
PowerShell 7.0 heeft een nieuwe syntaxis geïntroduceerd met behulp van de ternaire operator. Deze volgt de syntaxis van de ternaire C#-operator:
<condition> ? <if-true> : <if-false>
De ternaire operator gedraagt zich als de vereenvoudigde if-else-instructie. De <condition>-expressie wordt geëvalueerd en het resultaat wordt geconverteerd naar een Booleaanse waarde om te bepalen welke vertakking vervolgens moet worden geëvalueerd:
- De
<if-true>-expressie wordt uitgevoerd als de<condition>-expressie waar is - De
<if-false>-expressie wordt uitgevoerd als de<condition>-expressie onwaar is
Voorbeeld:
$message = (Test-Path $path) ? "Path exists" : "Path not found"
In dit voorbeeld is de waarde van $message "Pad bestaat" wanneer Test-Path als resultaat geeft $true. Wanneer Test-Path retourneert $false, is de waarde van $message "Pad niet gevonden".
$service = Get-Service BITS
$service.Status -eq 'Running' ? (Stop-Service $service) : (Start-Service $service)
Als de service in dit voorbeeld wordt uitgevoerd, wordt deze gestopt en als de status niet Actief is, wordt deze gestart.