Question Questions: cacher script et retour en arrière

Plus d'informations
il y a 3 ans 1 mois #33007 par Laurent Dardenne
>> les caractères au bout de la ligne qui forment le menu se décalent car ce que contient la variable s'affiche
Il faut calculer la longueur des lignes de ton menu et adapter ton écran, voir
 '-' * 3

>>Dans l'exemple, si on le lit sur le site, les caractères sont des "a"
Peut être un problème d'encodage de ton fichier d'origine.

Un exemple pour le retour arrière
$isExit=$false

Do {
    Cls
    write-host "    –ˆ–ˆ              CHOISSISEZ UNE OPTION                                                     –ˆ–ˆ" -ForegroundColor Cyan
    write-host "    –ˆ–ˆ     M        Couper la musique                                                         –ˆ–ˆ" -ForegroundColor Cyan
    write-host "    –ˆ–ˆ                                                                                        –ˆ–ˆ" -ForegroundColor DarkBlue
    write-host "    –ˆ–ˆ     X        Quitter                                                                   –ˆ–ˆ" -ForegroundColor Cyan
    $choix = read-host 'Votre Choix'

    switch ($choix){

        "x" { #quitter
            #Supprime tous les process Powershell sauf celui exécutant ce script
            Get-Process -Name powershell | Where-Object {$_.Id -ne $pid}|Stop-Process

            #FAUX !! on ne connait pas l'ID du process à supprimer
            #Get-Process -Name wscript | Where-Object {$_.Id -ne $pid}|Stop-Process

	    #todo décommenter
            #Get-Process -Name wscript |Stop-Process

            Start-Process -FilePath 'E:\'
            $isExit=$true
        }


        "m" { #Couper la musique   
            Do{
                $isEnd=$false
		 #todo décommenter
                #$WscriptProcess=Get-Process -Name wscript |Stop-Process -PassThru

               ##todo remove
                $WscriptProcess=Get-Process -Name powershell | Where-Object {$_.Id -ne $pid}|Stop-Process -PassThru

		
                if ($null -ne $WscriptProcess) 
                { 
		  Write-warning "HasExited '$($WscriptProcess.HasExited)'" #todo remove
		  $isEnd=$WscriptProcess.HasExited 
		}
		else
		{
		   Write-warning "pas de process."
		   $isEnd=$true 
		}
            }                   
            While ($isEnd -eq $false)

        }

        default { 
		Write-Host "ERREUR D'ENTREE" -ForegroundColor Cyan 
		pause
        }
    }
} While ($isExit -eq $false)
On peut surement faire mieux mais je n'ai pas plus de temps pour cela.
Ta gestion des id de process est à revoir car ton script est lié à un contexte précis.
Si par exemple je lance VS Code ta manière de procéder détruit son process PS associé.

>>Et également, il y aurai t-il un script pour télécharger sur le web un fichier zip ou bien un dossier, sur GitHub ?
Quel est ton besoin exactement ?

>>J'ai également une autre question. Il y aurait un moyen de récupérer l'affichage
Cela dépend par ce que tu entends par 'affichage', ce qui est affiché à l'écran (device graphique) ou ce que l'exécutable renvoie comme résultat.
On peut rediriger la sortie STDOUT d'un process si celui-ci l'utilise en interne :
#OK
ipconfig > c:\temp\test.txt
type c:\temp\test.txt

#Not OK
Notepad >c:\temp\test2.txt
type  c:\temp\test2.txt

Tutoriels PowerShell

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

Plus d'informations
il y a 3 ans 1 mois #33009 par KD
>>>Cela dépend par ce que tu entends par 'affichage', ce qui est affiché à l'écran (device graphique) ou ce que l'exécutable renvoie comme résultat.
J'aimerai récupérer ce que l'exécutable revoie comme résultat. Dans ce cas, l'exécutable effectue un speed test. Quand le speed test est terminé et que les valeurs (upload, download, latence) sont affichées dans l'exécutable, j'aimerai les stocker dans une variable pour les afficher par la suite. Si cela est trop compliqué, juste récupérer ce que l'exécutable renvoie suffirai.
>>>Il faut calculer la longueur des lignes de ton menu et adapter ton écran, voir
Désolé mais je n'ai pas compris ce que je dois faire.

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

Plus d'informations
il y a 3 ans 1 mois #33010 par KD
Egalement, il y aurait un moyen de stocker un script dans une variable ?
Exemple de script :

Write-host "bonjour"
Get-Process -Name powershell | Where-Object -FilterScript {$_.Id -ne $pid}|Stop-Process -PassThru 1>$null
Get-Process -Name powershell | Where-Object -FilterScript {$_.Id -ne $pid}|Stop-Process
$choix = read-host " "
switch ($choix){
"m" {
Stop-process
}
}

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

Plus d'informations
il y a 3 ans 1 mois #33011 par Laurent Dardenne
Pour l'affichage il faut calculer chaque ligne selon la longueur de ton message.
'-' * 3 renvoie trois tirets '---'. On multiplie la chaine à gauche par le nombre précisé à droite. Sinon il faut modifier ta manière de générer ton menu.

>>Si cela est trop compliqué,
Je ne sais pas je n'ai pas testé ton exécutable et par précaution je ne le ferais pas.

>>juste récupérer ce que l'exécutable renvoie suffirai.
Je t'ai indiqué la syntaxe de redirection.

>>il y aurait un moyen de stocker un script dans une variable ?
Oui un scriptblock:
 #déclaration
$Code={ Get-Process -Name powershell | Where-Object -FilterScript {$_.Id -ne $pid}|Stop-Process -PassThru }

#exécution
&$Code
Autre usage :
$filtre={$_.Id -ne $pid}
Get-Process -Name powershell | Where-Object -FilterScript $Filtre 

Tutoriels PowerShell

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

Plus d'informations
il y a 3 ans 1 mois #33032 par KD
Merci beaucoup pour votre aide ! Tout ceci fonctionne. J'ai de nouvelles questions. Si vous n'avez pas le temps de toutes les traiter maintenant ce n'est pas grave :).

PowerShell.exe -WindowStyle Hidden
Start-sleep -seconds 3
PowerShell.exe -WindowStyle ??
Que dois-je mettre pour que la fenètre s'affiche de nouveau ?

$LogicalDiskVolumeName = Get-CimInstance -ClassName Win32_LogicalDisk -Filter "DriveType=3" | Select-Object -Property Name
$LogicalDiskDeviceId = Get-CimInstance -ClassName Win32_LogicalDisk -Filter "DriveType=3" | Select-Object -Property DeviceID
$LogicalDiskProviderName = Get-CimInstance -ClassName Win32_LogicalDisk -Filter "DriveType=3" | Select-Object -Property ProviderName
$LogicalDiskDriveType = Get-CimInstance -ClassName Win32_LogicalDisk -Filter "DriveType=3" | Select-Object -Property DriveType
$LogicalDiskSize = Get-CimInstance -ClassName Win32_LogicalDisk -Filter "DriveType=3" | Select-Object -Property Size
$LogicalDiskFreeSpace = Get-CimInstance -ClassName Win32_LogicalDisk -Filter "DriveType=3" | Select-Object -Property FreeSpace
Ici, je veux récupérer les inforamtions des disques durs et j'apelle les variables (je ne les ai pas mises) pour les afficher. Mais cela ne marche pas. Auriez vous une solution ?

Merci de votre aide et bonne soirée :)

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

Plus d'informations
il y a 3 ans 1 mois #33034 par Laurent Dardenne
>>Que dois-je mettre pour que la fenêtre s'affiche de nouveau
Je ne sais pas, je ne connais pas ton intention/objectif.
S'il s'agit de manipuler un même process, cela va nécessiter du code avancée...

>>Mais cela ne marche pas.
Select-object -Property FreeSpace crée un nouvel objet ayant UNE propriété qui a un contenu, pour récupérer uniquement le contenu il faut utiliser Select-Object -ExpandProperty FreeSpace.

Tutoriels PowerShell

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

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