L'article mentionné dans le commentaire de jehad explique qu'il existe plusieurs endroits à partir desquels PowerShell peut charger un profil, ce que vous voulez. Vous voulez probablement celui par utilisateur pour la console PowerShell normale. Le chemin par lequel PowerShell recherchera ce fichier est indiqué dans la $profile
variable. Vous pouvez créer ce fichier et son répertoire contenant avec cette commande:
New-Item $profile -Type File -Force
Il crée un fichier appelé Microsoft.PowerShell_profile.ps1
dans un dossier appelé WindowsPowerShell
sous votre dossier Documents. Ensuite, vous pouvez l'ouvrir avec un éditeur de texte:
notepad $profile
Tout y sera exécuté chaque fois que vous lancerez la console PowerShell, que vous soyez élevé ou non. J'ai utilisé cet autre article pour produire une fonction (que vous pouvez utiliser comme applet de commande) 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 uniquement des éléments dans votre script de profil lorsque vous exécutez Elevated:
If (Test-Elevated) {
echo "Be careful!"
} Else {
echo "Eh, do whatever."
}
Étant donné que ce fichier contient du code qui sera exécuté automatiquement même sous une instance administrative PowerShell, vous ne voulez pas que les programmes exécutés sans niveau d'accès y aient accès en écriture. Je suggère de modifier son ACL pour ne donner à votre compte d'utilisateur qu'un accès en lecture tout en permettant aux administrateurs un contrôle total. (L'héritage devra d'abord être désactivé.) Vous ne pourrez alors modifier le script qu'à partir de programmes élevés.