none
Powershell menu interativo. Não consigo sair (opção inválida). RRS feed

  • Pergunta

  • Sou iniciante em Powershell e eu tenho um pequeno problema.

    Tenho 2 scripts (menu e submenu). Eu executo script_A (menu) e quando seleciono a opção 9 (exit) funciona como esperado. Mas, quando eu executo o script_A e escolho a opção 1 (submenu), e depois escolho a opção 9 (retornar para o script_A) e novamente seleciono 9 (sair), aparece essa mensagem: opção inválida.

    Porque? Alguém pode me ajudar? Os scripts A e B são:

    Script_A:

    $resposta = $null
    $vocetemcerteza = $null
    
    $ScriptToRun1= $PSScriptRoot+"\DNSMenu.ps1"
    
    function vocetemcerteza {
          $vocetemcerteza = read-host "Você quer sair? (s/n)"  
             if ($vocetemcerteza -eq "s"){Exit}  
             elseif ($vocetemcerteza -eq "n"){mainmenu}  
             else {write-host -foregroundcolor red "Opção inválida."
                vocetemcerteza  
               }  
           }  
    
    
    function mainmenu{  
    cls
    echo "    1. Submenu"  
    echo ""  
    echo "    9. Sair do Script" 
    
    $resposta = read-host "Escolha a opção:"  
    if ($resposta -eq 1){&$ScriptToRun1}  
    if ($resposta -eq 9){vocetemcerteza} 
    else {echo ""
       write-host -ForegroundColor magenta "Opção inválida."  
       sleep 1
       cls  
       mainmenu
       }  
       }  
     mainmenu

    Script_B:

    $ScriptToRun1= $PSScriptRoot+"\DNSemLoteMenu.ps1"
    function mainmenu{  
    cls
    echo "" 
    echo "    1. Criar registro" 
    echo ""  
    
    $resposta = read-host "Escolha a opção:"  
       if ($resposta -eq 1){&$ScriptToRun1}  
       if ($resposta -eq 9){mainmenu} 
       else {echo ""
          write-host -ForegroundColor magenta "Opção inválida."  
          sleep 1
          mainmenu  
          }  
        }  
     mainmenu

    
    


    quinta-feira, 17 de agosto de 2017 20:36

Todas as Respostas

  • olá Cleber, 

    achei meio estranho, não manjo muito de Powershell (estou aprendendo tmb rs), mas ao analisar o script, percebi que na verdade o Script A está funcionando perfeitamente, acontece que qnd ele dava o Exit, ele encerrava o Script A, e reabria o Script B... rs por isso que, percebi isso ao modificar as cores do "Opção inválida".

    Bom com base nisso, fiz duas pequenas alterações que funcionaram, segue..

    SCRIPT_A

    $resposta = $null
    $vocetemcerteza = $null
    
    $ScriptToRun1= $PSScriptRoot+"\DNSMenu.ps1"
    
    function vocetemcerteza {
        $vocetemcerteza = read-host "Você quer sair? (s/n)"  
        if ($vocetemcerteza -eq "s"){Exit}  
        elseif ($vocetemcerteza -eq "n"){mainmenu}  
        else {write-host -foregroundcolor red "Opção inválida."
              vocetemcerteza  
         }  
    }  
        
    function mainmenu{  
        cls
        write-host " Escolha a opção desejada"
        write-host ""  
        write-host "    1. Submenu"  
        write-host ""  
        write-host "    9. Sair do Script" 
        write-host ""  
    
        $resposta = read-host "Escolha a opção:"  
        if ($resposta -eq 1){&$ScriptToRun1}  
        if ($resposta -eq 9){vocetemcerteza} 
        elseif ($resposta -Ne "n" -or $resposta -Ne "s"){
           cls
           mainmenu
        }
       else {echo ""
             write-host -ForegroundColor magenta "Opção inválida."  
             sleep 1
             cls  
            mainmenu
        }  
    }  
     mainmenu

    SCRIPT_B

    $ScriptToRun1= $PSScriptRoot+"\DNSemLoteMenu.ps1"
    function mainmenu{  
    cls
    write-host ""  
    write-host "    1. Criar registro" 
    write-host ""   
    
    $resposta = read-host "Escolha a opção:"  
       if ($resposta -eq 1){
        $ScriptToRun1 
        Exit}  
       if ($resposta -eq 9){mainmenu} 
       else {write-host -ForegroundColor magenta "Opção inválida."  
          sleep 1
          mainmenu  
          }  
        }  
     mainmenu


    att, Aparecido Deveza

    • Sugerido como Resposta Aparecido Deveza quinta-feira, 31 de agosto de 2017 00:50
    sexta-feira, 18 de agosto de 2017 21:52