23 votes

Exécutez le script Powershell lorsque vous ouvrez Powershell

Est-il possible d'exécuter un script Powershell lorsque vous lancez Powershell? C'est-à-dire, double-cliquez sur l'icône Powershell et ouvrez la fenêtre. Y a-t-il un type de paramètre "auto-run" quelque part?

30voto

Walter Mitty Points 614

Il y a un script PowerShell qui s'exécute au démarrage de PowerShell, s'il existe. Le filespec pour ce script est dans la variable $profile.

Vous pouvez utiliser des commandes PowerShell pour vérifier si ce fichier de script existe, le créer s'il n'existe pas et le modifier avec le bloc-notes. Voici le guide pratique.

Notez que dans les versions récentes (~2020 et ultérieures), PowerShell ne lancera plus les scripts non signés (même pas $profile!) par défaut. Si vous suivez simplement les anciennes instructions telles que celles du guide pratique, lorsque vous ouvrez un nouveau PowerShell, vous verrez un message d'erreur comme celui-ci :

. : Le fichier C:\[..]\WindowsPowerShell\Microsoft.PowerShell_profile.ps1 ne peut pas être chargé
parce que l'exécution des scripts est désactivée sur ce système. Pour plus d'informations,
consultez about_Execution_Policies à
https:/go.microsoft.com/fwlink/?LinkID=135170.

Signer votre profil une fois - encore moins à chaque fois que vous le modifiez - n'est probablement pas réaliste, vous devez donc modifier la politique d'exécution pour le permettre.

Pour ce faire, vous pouvez soit :

  1. Exécuter la commande suivante en tant qu'administrateur :

    Set-ExecutionPolicy RemoteSigned -Scope LocalMachine

  2. ou utiliser RegEdit pour modifier Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell, en ajoutant une nouvelle REG_SZ avec le nom ExecutionPolicy et la valeur RemoteSigned.

Les deux ont exactement le même effet et persisteront à travers les sessions.

La politique RemoteSigned exige que les scripts téléchargés depuis un autre endroit soient signés, mais les scripts que vous créez localement sur votre machine (comme $profile) peuvent s'exécuter sans signature. (Vous pourriez également définir la politique sur Unrestricted pour permettre également l'exécution de scripts téléchargés non signés, mais ce n'est pas une pratique de sécurité recommandée.)

13voto

N P Points 131

Tapez la commande suivante :

New-item –type file –force $profile

Un fichier Microsoft.PowerShell_profile.ps1 sera créé dans C:\Users\\Documents\WindowsPowerShell\ pour PowerShell 5 et versions antérieures ou C:\Users\\Documents\PowerShell\ pour PowerShell 6 Core (ce dossier sera créé automatiquement).

Ensuite, modifiez ce fichier et vous pouvez ajouter des fonctions PowerShell personnalisées ou charger des modules ou des snap-ins...

Maintenant, lorsque vous lancez votre console PowerShell, Microsoft.PowerShell_profile.ps1 sera activé.

2voto

Xiah Points 41

Il existe de nombreuses façons de faire cela. Une méthode simple consiste à créer un script de profil dans votre chemin d'accès de base de PowerShell par défaut.

  1. Naviguez vers $env:UserProfile\Documents\WindowsPowerShell.
    En général, cela se développe en C:\Users\\Documents\WindowsPowerShell.
    Créez les dossiers s'ils n'existent pas.
  2. Créez un fichier nommé profile.ps1. Vous pouvez écrire votre script dans ce fichier, et ce fichier sera exécuté à chaque fois que vous démarrez PowerShell en tant qu'utilisateur. Si vous avez le script ailleurs, vous pouvez appeler ces scripts depuis profile.ps1.

À noter, le nom de profil par défaut devrait être Microsoft.PowerShell_profile.ps1.
Mais profile.ps1 fonctionne également.

2voto

Pour exécuter un script arbitraire au démarrage de la session PowerShell, utilisez la commande suivante :

PowerShell -NoExit -File CheminVersScript.ps1

1voto

user428240 Points 11

Mettre à jour la variable $Profile par défaut Modifier le fichier .PS1 par défaut (s'il n'existe pas, le créer) Ajouter votre script au fichier .PS1

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X