Je n'ai qu'un seul compte sur ma machine Windows Vista et cet utilisateur dispose de privilèges administratifs. Cependant, lorsque j'essaie d'exécuter une commande dans PowerShell pour tuer un certain processus, je suis accueilli par un message "Accès refusé". Comment devenir administrateur?
La façon la plus simple de le faire est de lancer Powershell avec des jetons d'administration. Pour ce faire, faites un clic droit sur Powershell (ou un raccourci vers celui-ci) et cliquez sur "Exécuter en tant qu'administrateur". Vous pouvez également utiliser elevate.cmd .
La méthode Powershell v2, selon Microsoft , consiste à cliquer avec le bouton droit sur le raccourci et à choisir Exécuter en tant qu'administrateur .
Et pour élever dans une fenêtre Powershell:
start-process powershell –verb runAs
Lequel, à partir d'un fichier de commandes cmd.exe, d'un raccourci ou d'une ligne d'exécution, ressemblerait (à plusieurs reprises) à ceci:
powershell "start-process powershell -verb runas"
Cela ouvre une nouvelle instance PowerShell:
function Run-Elevated ($scriptblock)
{
# TODO: make -NoExit a parameter
# TODO: just open PS (no -Command parameter) if $scriptblock -eq ''
$sh = new-object -com 'Shell.Application'
$sh.ShellExecute('powershell', "-NoExit -Command $scriptblock", '', 'runas')
}
Je m'attends à ce qu'il y ait des problèmes avec cela - en particulier, vous n'obtiendrez pas la sortie de votre bloc de script dans le script appelant. D'un autre côté, il sera là dans la nouvelle instance PS afin que vous puissiez y pirater.
Si vous souhaitez toujours exécuter PowerShell avec des privilèges d'administrateur, vous pouvez cliquer avec le bouton droit sur le raccourci PowerShell, puis cliquer sur le bouton "Avancé ..." de l'onglet "Raccourci", puis sélectionner "Exécuter en tant qu'administrateur". ".
La manière la plus simple ...
Voici comment configurer une commande facile pour obtenir des privilèges d'administrateur à tout moment, à partir de n'importe quelle session PowerShell!
Étape 1: ouvrez votre profil PowerShell. (Autorisez le bloc-notes à créer le fichier s'il est manquant.)
notepad "$profile"
Étape 2: collez le code suivant n'importe où dans ce fichier. (Choisissez en fonction de la version de PowerShell que vous souhaitez exécuter - et notez que le profil est spécifique à la version, vous pouvez donc le faire pour chacune de vos versions de PowerShell si vous les exécutez en parallèle).
# PowerShell 5
function GoAdmin { Start-Process PowerShell –Verb RunAs }
# PowerShell Core
function GoAdmin { Start-Process pwsh –Verb RunAs }
Étape 3: redémarrez PowerShell. La commande est désormais disponible en permanence.
Étape 4: Chaque fois que vous souhaitez passer en mode administrateur, tapez simplement GoAdmin
(et ne vous inquiétez pas de taper la casse correcte; les fonctions PS sont en fait insensibles à la casse). Vous pouvez bien sûr nommer la fonction quelque chose d'autre comme Elevate
ou autre chose, mais je ne voulais aucun risque de conflits, donc je l'ai nommée une phrase de deux mots sans tirets, pour m'assurer qu'elle ne sera jamais en conflit avec Fonctionnalités propres à PowerShell.
Notez que la fenêtre administrateur s'ouvre dans un shell distinct. Vous pouvez fermer le shell d'origine ou le garder ouvert. Si votre travail d'administrateur fait quelque chose de "gros", comme l'ajout/la modification de variables d'environnement, votre utilisateur-Shell (non administrateur) peut simplement taper refreshenv
pour recharger son environnement et obtenir les changements. (Edit: découvert que refreshenv
est fourni par le grand Chocolatey gestionnaire de paquets. Tapez Update-SessionEnvironment
à la place si vous n'avez pas Chocolatey.)
Donc en gros, juste GoAdmin
, faites les trucs d'administration comme installer des paquets (avec https://chocolatey.org/ bien sûr!), Puis fermez la fenêtre d'administration et exécutez refreshenv
dans votre shell utilisateur! Voila.