Gå til innhold

[Løst] "hvis" og "om starter med/inneholder" i powershell


Anbefalte innlegg

Ok.

 

jeg har et par kodelinjer i powershell som skal kjøres basert på hva jeg skriver inn her:

$NOE = Read-Host "Skriv noe"

f.eks om jeg skriver "AB123" så skal en kodesnutt kjøres, men om jeg skriver "CD123" skal en annen kodesnutt kjøres.

 

Det er jeg ute etter er mao at hvis setningen starter med (eventuelt, om det blir lettere: inneholder) "AB" skal den første snutten kjøres, men dersom den starter med/inneholder "CD" skal den andre kodesnutten kjøres.

 

ønsker også en "hvis ikke" altså om noe annet skrives.

 

Noen som vet hvordan jeg skal få det til?

 

Har sammenheng med dette forøvrig: https://www.diskusjon.no/index.php?showtopic=1661259&hl=

 

Lenke til kommentar
Videoannonse
Annonse

Fungerte :)

 

og her er resultatet:

DO{
 
    $input = Read-Host "Skriv saksnummeret du ønsker å åpne"
    
    If($input -Match "IM")
        {Start-Process "https://SERVER.DOMENE.no/sm/index.do?ctx=docEngine&file=probsummary&query=number%3D%22$input%22&action=&title=Incident%20$input"} 

    ElseIf($input -Match "SD")
        {Start-Process "https://SERVER.DOMENE.no/sm/index.do?ctx=docEngine&file=incidents&query=incident.id=%22$input%22&queryHash=89472347&action=&title=Interaction%20;$input"}
    
    Else{Write-Host "echo $input er ikke et gyldig saksnummer, eller ikke implementert"}
 
 } until ($input -eq "EXIT")
Lenke til kommentar

 

...

 

Forhåpentligvis har du tenkt på hva som skjer dersom du taster inn f.eks. «1IM23» eller «asdf». :)

 

det har jeg ;) vi har ingen saksnummer som inneholder annet en noen korte bokstaver i starten og resten tall, så jeg tror ikke det blir noe reel problemstilling.

Dog, det beste hadde vært om jeg kunne velge "starter med" eller liknende. 

Lenke til kommentar

...

 

Du kan f.eks. gjøre noe som følgende dersom du vil ha det enkelt og litt mer ryddig.

$BAD_CASE_NUMBER_ERROR_MSG = "{0} er ikke et gyldig saksnummer, eller ikke implementert"

do {
    $input = Read-Host "Skriv saksnummeret du ønsker å åpne"
    if (-not ($input -match "^([A-Z]+)\d+$")) {
        Write-Output ($BAD_CASE_NUMBER_ERROR_MSG -f $input)
        continue
    }

    $something = $Matches[1]

    $urlTable = @{
        "IM" = "https://SERVER.DOMENE.no/sm/index.do?ctx=docEngine&file=probsummary&query=number%3D%22{0}%22&action=&title=Incident%20{0}";
        "SD" = "https://SERVER.DOMENE.no/sm/index.do?ctx=docEngine&file=incidents&query=incident.id=%22{0}%22&queryHash=89472347&action=&title=Interaction%20;{0}";
    }

    $urlFormat = $urlTable[$something]
    if (-not $urlFormat) {
        Write-Output ($BAD_CASE_NUMBER_ERROR_MSG -f $input)
        continue
    }

    $url = $urlFormat -f $input
    Start-Process -FilePath $url
} until ($input -eq "exit")
Endret av ahw_
Lenke til kommentar

Det kan også være greit å se på switch når/om det etter hvert blir flere tilfeller som skal håndteres:

while(1)
{
    switch -Regex (Read-Host "Skriv saksnummeret du ønsker å åpne")
    {
        "^IM\d+$" { Start-Process "https://SERVER.DOMENE.no/sm/index.do?ctx=docEngine&file=probsummary&query=number%3D%22$_%22&action=&title=Incident%20$_"; break; }
        "^SD\d+$" { Start-Process "https://SERVER.DOMENE.no/sm/index.do?ctx=docEngine&file=incidents&query=incident.id=%22$_%22&queryHash=89472347&action=&title=Interaction%20;$_"; break; }
        "^EXIT$" { return; }
        default { Write-Host "'$_' er ikke et gyldig saksnummer, eller ikke implementert"; }
    }
}



Endret av Paull
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...