41 votes

Est-ce que Powershell a une sorte d'équivalent à .bashrc?

J'ai quelques fonctions que j'aimerais charger par défaut lorsque j'ouvre un shell PowerShell administratif. Y a-t-il un équivalent pour dire .bashrc ou .profile que je pourrais utiliser pour importer automatiquement les scripts lorsque je démarre le shell ?

39voto

Ben N Points 38070

L'article mentionné dans le commentaire de jehad explique qu'il existe plusieurs endroits à partir desquels PowerShell peut charger un profil, ce qui est ce que vous voulez. Vous voulez probablement celui par utilisateur pour la console PowerShell normale. Le chemin à partir duquel PowerShell vérifiera ce fichier est donné dans la variable $profile. Vous pouvez créer ce fichier et son répertoire contenant avec cette commande :

New-Item $profile -Type File -Force

Cela crée un fichier appelé Microsoft.PowerShell_profile.ps1 dans un dossier appelé WindowsPowerShell dans votre dossier Documents. Ensuite, vous pouvez l'ouvrir avec un éditeur de texte :

notepad $profile

Tout ce qui y est écrit sera exécuté chaque fois que vous lancez la console PowerShell, que vous soyez élevé ou non. J'ai utilisé cet autre article pour produire une fonction (que vous pouvez utiliser comme une cmdlet) pour vérifier si l'instance PowerShell actuelle est élevée. Mettez ceci dans votre nouveau fichier de profil :

Function Test-Elevated {
  $wid = [System.Security.Principal.WindowsIdentity]::GetCurrent()
  $prp = New-Object System.Security.Principal.WindowsPrincipal($wid)
  $adm = [System.Security.Principal.WindowsBuiltInRole]::Administrator
  $prp.IsInRole($adm)
}

Cette fonction peut être utilisée dans votre expérience PowerShell normale, mais vous pouvez également l'utiliser pour exécuter des choses uniquement dans votre script de profil lorsque vous êtes élevé :

If (Test-Elevated) {
  echo "Soyez prudent !"
} Else {
  echo "Eh, faites ce que vous voulez."
}

Étant donné que ce fichier contient du code qui sera automatiquement exécuté même sous une instance PowerShell administratrice, vous ne voulez pas que les programmes tournant sans élévation aient un accès en écriture. Je suggère de changer son ACL pour ne donner que l'accès en lecture à votre compte utilisateur tout en permettant aux administrateurs un contrôle total. (L'héritage devra d'abord être désactivé.) Vous ne pourrez ensuite modifier le script qu'à partir de programmes élevés.

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