Nous allons utiliser PowerShell sur Windows. PowerShell est l’outil en ligne de commande de Windows. Nous allons regarder comment passer à la dernieere version de cett outil, puis comment obtenir les droits d’installation administrateur dans une session.
Cet outil donne des fonctionnalités proche de ce que nous retrouvons en linux.
Nous allons passer en revues quelques actions pour utiliser PowerShell sur Windows
Utiliser PowerShell : execution de script Elixir désactivé sur PowerShell
Nous souhaitons créer une application Phoenix simple que nous appelons hello. L’application la plus simple est sans base de données. Regardons la documentation avec la liste des options pour phx.new :
- mix phx.new hello_desktop
--no-ecto
Nous créons le projet dans le dossier :
- C:\Surface\Phoenix\Projets
PS C:\Users\berou> cd C:\Surface\Phoenix\Projets PS C:\Surface\Phoenix\Projets> pwd Path ---- C:\Surface\Phoenix\Projets PS C:\Surface\Phoenix\Projets> mix phx.new hello_desktop --no-ecto mix : Impossible de charger le fichier C:\Program Files (x86)\Elixir\bin\mix.ps1, car l'exécution de scripts est désactivée sur ce système. Pour plus d'informations, consultez about_Execution_Policies à l'adresse https://go.microsoft.com/fwlink/?LinkID=135170. Au caractère Ligne:1 : 1 + mix phx.new hello_desktop --no-ecto + ~~~ + CategoryInfo : Erreur de sécurité : (:) [], PSSecurityException + FullyQualifiedErrorId : UnauthorizedAccess PS C:\Surface\Phoenix\Projets>
PowerShell bloque l’installation du projet pour des questions de sécurité.
mix : Impossible de charger le fichier C:\Program Files (x86)\Elixir\bin\mix.ps1, car l'exécution de scripts est désactivée sur ce système. Pour plus d'informations, consultez about_Execution_Policies à l'adresse https://go.microsoft.com/fwlink/?LinkID=135170. Au caractère Ligne:1 : 1
Nous allons passer à la dernière version de PowerShell
Utiliser PowerShell et mettre à jour PowerShell en ligne de commande
Nous mettons à jour PowerShell en ligne de commande.
- winget install –id=Microsoft.PowerShell -e
PowerShell se met à jour vers la version 7
PS C:\Users\berou> winget install --id=Microsoft.PowerShell -e La source 'msstore' nécessite que vous consultiez les contrats suivants avant de l'utiliser. Terms of Transaction: https://aka.ms/microsoft-store-terms-of-transaction La source nécessite que la région géographique à 2 lettres de l'ordinateur actuel soit envoyée au service principal pour fonctionner correctement (par exemple, « ÉTATS-UNIS »). Acceptez-vous toutes les conditions des contrats sources ? [Y] Oui [N] Non: Y Trouvé PowerShell [Microsoft.PowerShell] Version 7.3.6.0 La licence d'utilisation de cette application vous est octroyée par son propriétaire. Microsoft n'est pas responsable des paquets tiers et n'accorde pas de licences à ceux-ci. Téléchargement en cours https://github.com/PowerShell/PowerShell/releases/download/v7.3.6/PowerShell-7.3.6-win-x64.msi ██████████████████████████████ 100 MB / 100 MB Le code de hachage de l'installation a été vérifié avec succès Démarrage du package d'installation... Merci de patienter. Installé correctement PS C:\Users\berou>
Vérifier la version PowerShell installée
Nous ouvrons une nouvelle session PowerShell.
Pour obtenir la version de PowerShell nous utilisons la commande : host.
PS C:\Surface\Phoenix\Projets> host Name : ConsoleHost Version : 7.3.6 InstanceId : d57e841d-50c2-4658-9b61-429c9a93e8ee UI : System.Management.Automation.Internal.Host.InternalHostUserInterface CurrentCulture : fr-FR CurrentUICulture : fr-FR PrivateData : Microsoft.PowerShell.ConsoleHost+ConsoleColorProxy DebuggerEnabled : True IsRunspacePushed : False Runspace : System.Management.Automation.Runspaces.LocalRunspace PS C:\Surface\Phoenix\Projets>
Nous avons bien la version 7.3.6 installée.
Utiliser PowerShell et donner les droits pour l’exécution d’un script non signé
Pour donner les droits d’exécuter un script non signé au cours de la session :
- Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
- option [a]
Nous voyons que l’exécution de la commande mix est maintenant possible :
PS C:\Surface\Phoenix\Projets> elixir -v Erlang/OTP 26 [erts-14.0.2] [source] [64-bit] [smp:8:8] [ds:8:8:10] [async-threads:1] [jit:ns] Elixir 1.14.5 (compiled with Erlang/OTP 25) PS C:\Surface\Phoenix\Projets> mix phx.new hello_desktop --no-ecto mix: File C:\Program Files (x86)\Elixir\bin\mix.ps1 cannot be loaded. The file C:\Program Files (x86)\Elixir\bin\mix.ps1 is not digitally signed. You cannot run this script on the current system. For more information about running scripts and setting execution policy, see about_Execution_Policies at https://go.microsoft.com/fwlink/?LinkID=135170. PS C:\Surface\Phoenix\Projets> Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass Do you want to run software from this untrusted publisher? File C:\program files\powershell\7\Modules\Microsoft.PowerShell.Security\Security.types.ps1xml is published by CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US and is not trusted on your system. Only run scripts from trusted publishers. [V] Never run [D] Do not run [R] Run once [A] Always run [?] Help (default is "D"): a PS C:\Surface\Phoenix\Projets> mix phx.new hello_desktop --no-ecto The directory c:/Surface/Phoenix/Projets/hello_desktop already exists. Are you sure you want to continue? [Yn] Y * creating hello_desktop/config/config.exs * creating hello_desktop/config/dev.exs * creating hello_desktop/config/prod.exs * creating hello_desktop/config/runtime.exs * creating hello_desktop/config/test.exs ...
Ceux intéréssé par la création d’une application Phoenix Desktop sur Windows peuvent se reporter à notre article : créer une application Desktop sur Windows avec Elixir.
Quelques commandes PowerShell
On retrouve les mêmes commandes qu’en linux :
Gestion des fichiers et des repertoires
répertoire courant : pwd
contenu du répertoire : ls
changer de répertoire : cd
créer un répertoire : md
Autre commande
afficher l’aide PowerShell : help
Conclusion
Nous avons installé PowerShell et avons utilisé l’option permettant d’exécuter les scripts avec des droits Administrateurs définis pour la session.