55 votes

Comment supprimer définitivement un alias Powershell par défaut ?

Pour une raison inconnue, les développeurs ont inclus "curl" comme alias de Invoke-WebRequest même s'il n'est pas compatible avec l'implémentation correcte de curl, ce qui signifie qu'il se met en travers du chemin lorsque j'essaie de faire une requête curl. Je peux supprimer l'alias en utilisant Remove-Item alias:curl mais la prochaine fois que je lance Powershell, l'alias est revenu. Existe-t-il un moyen de le supprimer définitivement sans avoir à exécuter un script à chaque démarrage ?

66voto

megamorf Points 2188

Sautez cette étape si vous avez déjà un profil Powershell :

New-Item $profile -force -itemtype file

Puis modifiez votre profil :

notepad $profile

Ajoutez-y la ligne suivante :

remove-item alias:curl

Enregistrez, fermez le bloc-notes et rechargez le profil avec la commande ci-dessous ou fermez et ouvrez Powershell pour appliquer le profil :

. $profile

8voto

beatcracker Points 2522

Je m'en tiendrais à l'utilisation de curl.exe au lieu de seulement curl . Cette approche ne dépend pas de l'exécution de PowerShell avec un profil particulier (et PowerShell peut être exécuté sans profil du tout en utilisant la méthode suivante -NoProfile interrupteur).

0voto

STTR Points 6623

Ajouter Remove-Item alias:cur à powershell autorun script

au-dessus de XP, 2003 :

%ALLUSERSPROFILE%\Documents\Msh\profile.msh
%ALLUSERSPROFILE%\Documents\Msh\Microsoft.Management.Automation.msh_profile.msh

XP, 2003 :

%USERPROFILE%\My Documents\msh\profile.msh
%USERPROFILE%\My Documents\msh\Microsoft.Management.Automation.msh_profile.msh

0voto

Chemputer Points 21

Existe-t-il un moyen de le supprimer définitivement sans avoir à exécuter un script à chaque démarrage ?

Techniquement, non. Cependant, vous pouvez utiliser les profils PowerShell intégrés, qui exécutent un script chaque fois que vous chargez PowerShell, pour le faire à votre place. Mais, au moins, ce n'est pas manuel.

C'est (une partie) de ce que j'ai ajouté à mes $profile.AllUsersAllHosts fichier. Il est similaire à La réponse de megamorf mais légèrement plus étendu.

Remove-Item alias:curl
Set-Alias curl "${env:SystemRoot}\System32\curl.exe"
Set-Alias wcurl Invoke-WebRequest

Vous pouvez le faire avec l'une des les 6 fichiers de profil Powershell Mais je suis le seul à utiliser mon bureau, et je ne vois pas d'inconvénient à le changer un peu. Si ce n'est pas le cas, alors allez avec un autre avec une portée plus petite. Le $Profile par défaut est CurrentUserCurrentHost, donc ça ne peut pas faire de mal, je vais faire le reste avec ça en tête, remplacez juste le code pour celui que vous changez.

Ouvrez un terminal PowerShell, en tant qu'administrateur si vous le pouvez, mais je suis presque certain que la valeur par défaut, CurrentUSerCurrentHost, ne nécessite pas de privilèges d'administrateur.

Alors cours :

if (!(Test-Path -Path $profile.currentusercurrenthost)) {
  New-Item -ItemType File -Path $profile.currentusercurrenthost -Force
}

Ensuite, exécutez notepad $profile.currentusercurrenthost

Il vérifiera si le fichier existe, et s'il n'existe pas, il le créera. Puis la deuxième commande l'ouvrira avec le bloc-notes.

Note : Si vous avez installé VSCode ou Notepad++, vous pouvez l'ouvrir avec VSCode en tapant code $profile.currentusercurrenthost au lieu de notepad . Pour notepad++, exécutez la commande Set-Alias npp "${Env:ProgramFiles}\Notepad++\notepad++.exe" a temporairement créer un alias pour Notepad++. De cette façon, vous pouvez simplement taper npp $profile.currentusercurrenthost et il s'ouvrira dans notepad++. C'est similaire avec d'autres éditeurs de fichiers. Vous pouvez également ajouter cette option à votre profil si vous souhaitez qu'elle soit permanente.

Ensuite, ajoutez les lignes comme vous le souhaitez, bien que cette première ligne doit être le premier.
Remove-Item alias:curl va simplement supprimer l'alias existant que curl a pour Invoke-WebRequest à chaque fois que vous ouvrez une invite powershell. Set-Alias curl "${env:SystemRoot}\System32\curl.exe" définit curl comme un alias pour curl.exe qui est le réel cURL. Il est inclus dans Windows 10 Build 17063 et plus.

J'ai également choisi d'ajouter un alias pour l'Invoke-WebRequest original, en l'appelant wcurl, avec Set-Alias wcurl Invoke-WebRequest car il peut y avoir des situations où je veux l'utiliser, et où je ne veux pas taper la longue chaîne ici.

Donc, dans l'ordre, c'est-à-dire :

  1. Remove-Item alias:curl
  2. Set-Alias curl "${env:SystemRoot}\System32\curl.exe"
  3. Set-Alias wcurl Invoke-WebRequest
  4. Set-Alias npp "${Env:ProgramFiles}\Notepad++\notepad++.exe"

Tout ce qui suit le #1 est optionnel, et l'ordre après le #1 n'a pas d'importance, mais le #1 doit être avant le #2, ou toute tentative de créer un alias nommé curl.

S'il s'agit d'un tout nouveau profil, il sera vide à l'ouverture, et vous pourrez les ajouter (dans l'ordre) si vous le souhaitez ou non. S'il n'est pas vierge, je vous recommande de les ajouter vers la fin, voire à la fin. Personnellement, mon $Profile se termine par

cls
pwsh -v

qui efface l'écran des diverses opérations qu'il effectue au démarrage, et affiche la version de PowerShell.

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