PowerShell Bedingung?
Ich möchte gerne folgendes in meinem PS Skript ergänzen.
Wenn Variable $xy den Wert "AB" aufweist, soll die Variable $xy auf den Wert "CD" gesetzt werden.
Wie geht das?
2 Antworten
der Klassiker:
$xy='AB'
if ($xy -eq 'AB') {$xy='CD'}
$xy # mal anzeigen
der ganz ohne if dafür mit regEx:
$xy='AB'
$xy=$xy -replace '^AB$','CD'
$xy
Erklarung:
folgenden String durch 'CD' ersetzen und der Variable zuweisen:
- ^Zeilenanfang
- AB
- $Zeilenende
Wenn dieses Muster nicht stimmt, gibts nichts zu ersetzen und alles beibt wie es ist.
$xy='ABc'
$xy=$xy -replace '^AB$','CD'
$xy
für kleine Strings und einfach Muster dürfte das etwas "overdressed" sein, hat aber potential
Via if-elseif:
if ($xy -ceq "AB") {
# ...
}
elseif ($xy -ceq "YZ") {
# ...
}
Mehr dazu kannst du in der Dokumentation nachlesen.
Wenn Du meherer verleichs-muster Durch das Gleiche ersetzen möchtest wäre die Replace-variante einfacher zu handhaben
$xy=$xy -creplace '^(AB|YZ)$','CD'
oder besser switch
$xy = 'YZ'
switch -casesensitive ($xy)
{
'AB' {$xy = 'CD'}
'YZ' {$xy = 'EF'}
'Blubb' {$xy = 'Aus die Maus'}
}
$xy
Beim Vergleich via -eq sollte man allerdings berücksichtigen, dass die Prüfung case-insensitiv ist. Das heißt, die Strings ab, AB, aB, Ab werden alle als gleich gewertet.
Dasselbe gilt bei -replace.
Für ein case-sensitives Verhalten sollten -ceq / -creplace verwendet werden.
PS: wegen des von Regex9 verwendeten c-Präfix (groß-kleinschreibung berücksichtigen):
...geht auch mit -replace : -creplace
Mittels einer if-Anweisung:
$xy = "AB"
if ($xy -ceq "AB") {
$xy = "CD"
}
Write-Output $xy # "CD"
oh super danke! Und wie kann ich eine 2 Bedingung einfügen? Also wenn der Wert nicht "AB" sondern "YZ" ist soll "EF" in die Variable $XY gesetzt werden. Das geht doch irgendwie mit "else" oder?