Question Problème d'affiche persistant

Plus d'informations
il y a 1 an 6 mois #32677 par Yoann
Bonjour à tous, je suis en train de réaliser un script qui en appelle d'autres et je rencontre des problème d'affichage sur les menus de choix avec des souci d'affichage fantômes.
Le premier menu qui va s'afficher:
$continueNav = $true
while ($continueNav)
{    
    Clear
    Write-Host "----- Choix ------"
    Write-Host ""
    Write-Host "1. Choix 1"
    Write-Host "2. Choix 2"
    Write-Host "0. Choix 3"
    Write-Host "--------------------------------"
    $choixNav = read-host "Faire un choix puis valider"
    switch ($choixNav)
    {
        1
        {    
            #action 1
        }        
        2
        {
            #action 2
        }
        0
        {
            return
        }
        default {Write-Host "Choix invalide"-ForegroundColor Red}
        
    }
}

Lorsque je vais afficher le menu suivant les textes du premier menu ne vont pas être effacés entièrement mais le menu 2 va remplacer le menu 1. Cela crée des problème d'affichage notamment si les textes sont plus court dans le menu 2. 
Pas sûr que mon explication soit très clair :) mais j'essaie au mieux

Merci.

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 1 an 6 mois - il y a 1 an 6 mois #32679 par Julien Groizard
Hello,

De ce que j'ai compris, tu souhaites afficher le menu suivant "par dessus" l'ancien.

En d'autres termes, effacer l'ancien et poursuivre avec le suivant.

Powershell pourrait faire ça en commençant tous tes menus par des Clear-Host (Clear).
Comme ça, tous tes affichages repartiront du début de la console.

Je me permettrais également de te conseiller de faire une fonction au moins pour l'affichage des menus.

Exemple :

function Show-Menu {
param (
$select
)
switch ($select) {
"Main" {
Write-Host "
Menu Principal
"
Write-Host ""
Write-Host "
Choix
"
Write-Host ""
Write-Host "1. Choix 1"
Write-Host "2. Choix 2"
Write-Host "0. Exit..."
Write-Host "
"
}
"2" {
Write-Host "
Menu 2
"
Write-Host ""
Write-Host "
Choix
"
Write-Host ""
Write-Host "1. Choix 1"
Write-Host "2. Choix 2"
Write-Host "0. Menu Principal"
Write-Host "
"
}
Default {}
}
}
$continueNav = $true
while ($continueNav)
{
Clear
Show-Menu -select "Main"
$choixNav = read-host "Faire un choix puis valider"
switch ($choixNav)
{
1
{
Clear-Host
do {
Show-Menu -select "2"
} while (
($choixNav = read-host "Faire un choix puis valider") -ne 0
)
}
2
{
#action 2
}
0
{
return
}
default {Write-Host "Choix invalide"-ForegroundColor Red}

}
}


Le Do-While est une variante pour afficher en permanence tant que tu n'as pas entrée 0 (les doubles parenthèses sont importantes pour récupérer $choixNav).

Si tu es perdu, reprend simplement l'idée de base qui est de vider la console pour la réafficher :)

En espérant aider :)

Bonne journée à toi
Dernière édition: il y a 1 an 6 mois par Julien Groizard.

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 1 an 6 mois #32681 par Yoann
Réponse de Yoann sur le sujet Problème d'affiche persistant
Salut Julien,
merci de ta réponse. J'ai oublié d'ajouter que j'ai déjà testé avec des CLS dans le While et dans "l'action" du choix mais sans succès, je vais tester en modifiant mon code avec ta solution de fonction.

Merci.

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 1 an 6 mois #32682 par Yoann
Réponse de Yoann sur le sujet Problème d'affiche persistant
J'ai essayé de modifier mon code mais en fait je pense que la fonction d'appel de menu ne s'adapte pas très bien à l'architecture de mon script, je m'explique:
 Mon menu principal propose 5 choix. Les choix 2-3-4-5 font appels à des scripts indépendant en .psm1 indépendants qui se lance et ensuite retour au menu principal, tout est nickel.
Le choix 1 de mon menu principal va d'abord lancer une commande dans mon *ps1 principal, ensuite lancement d'un premier *psm1 (qui lui contient un menu de choix), reviens dans mon principal, lance mon deuxième *psm1, etc. 
Est-ce que tu penses que cette persistance puisse venir de ce fonctionnement?

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 1 an 6 mois #32683 par Julien Groizard
Je pense que l'erreur vient d'une confusion avec l'extension "psm1".

En effet, il s'agit d'un module de powershell (d'où le "m").

Dans ces fichiers, on ne peut mettre que des fonctions qu'on appellera et utilisera uniquement dans un script père.

Si tu veux exécuter un script indépendamment du principal, je t'inviterais à garder l'extension ".ps1" et appeler ce script via la commande : "Start-Process Powershell '*.ps1' "

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 1 an 6 mois #32686 par Yoann
Réponse de Yoann sur le sujet Problème d'affiche persistant
Je viens de tout réécrire avec des scripts au lieu des modules, du coup plus de soucis.
J'étais tombé sur une info d'un tuto qu'il valait mieux des modules, ben du coup pas dans mon cas :) :)

Merci pour ton aide

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.075 secondes
Propulsé par Kunena