Come rimuovo permanentemente un alias Powershell predefinito?


22

Per qualche ragione sconosciuta, gli sviluppatori hanno incluso "curl" come alias Invoke-WebRequest, anche se non è compatibile con la corretta implementazione di curl, il che significa che si mette in mezzo quando provo a fare una richiesta di curl. Posso rimuovere l'alias usando Remove-Item alias:curl, ma al prossimo avvio di Powershell, l'alias è tornato. C'è un modo per rimuoverlo permanentemente senza dover eseguire uno script ogni volta che avvio?


solo FYI: ho emesso lo stesso comando Remove-Item alias:curl all'interno di Windows Server 2019 e non viene più visualizzato anche dopo il riavvio
Matson Kepson

Risposte:


33

Salta questo passaggio se hai già un profilo Powershell:

New-Item $profile -force -itemtype file

Quindi modifica il tuo profilo:

notepad $profile

Aggiungi la seguente riga ad esso:

remove-item alias:curl

Salvare, chiudere il blocco note e ricaricare il profilo con il comando seguente o chiudere e aprire Powershell per applicare il profilo:

. $profile

1
Grazie. Devo dire che è fastidioso che gli sviluppatori di PowerShell non ci abbiano pensato, costringendoci a risolvere il problema in questo modo.
Nathan Ridley,

Non penso che debba essere un sostituto 1: 1. Powershell si concentra su un uso globale di un set definito di parametri e di associazione automatica dei parametri (che è davvero eccezionale una volta che ci si immerge). Fornire l'alias di arricciatura è mostrare alle persone abituate a * nix che esiste un equivalente di arricciatura in Powershell.
Megamorf

1
Il primo passo può sempre essere ignorato. L'ho appena fatto e ho ricevuto un pop-up che mi chiedeva se volevo creare il file.
np8,

FYI: Per alcuni alias, dovrai aggiungere "-Force"
Dan Friedman

La cosa "divertente" è che anche i documenti azzurrati mostrano comandi di arricciatura per testare rapidamente la cosa. Comandi di arricciatura reali, non Invoke-WebRequestsintassi ...
Akos Lukacs

4

Continuerei a usare curl.exeinvece di solo curl. Questo approccio non si basa su PowerShell in esecuzione con un profilo particolare (e PowerShell potrebbe essere eseguito senza alcun profilo utilizzando -NoProfileswitch).


1
Potrei sostenere che in teoria PowerShell potrebbe eventualmente funzionare su unix, dove i file di programma non hanno estensione ".exe". Non ha assolutamente senso unire le persone affinché gli alias siano abilitati negli script . Mi chiedo se quella scelta di cattiva progettazione sia stata intenzionale nel tentativo di uccidere lo stack di software GNU opensource su Windows. E perché non abbiamo almeno un "comando" incorporato per forzare la shell a cercare un vero programma? Powershell fallisce davvero sul principio KISS.
Johan Boulé,

1
@ JohanBoulé Non c'è bisogno di teorie del complotto, era solo una svista. PowerShell 6 è già in esecuzione su Linux e i problemi di alias sono parzialmente risolti. Vedi questo link: initialsession: rimuovi ricciolo e wget alias , rimuovi tutti gli alias integrati e inseriscili in un modulo , fornisci una sintassi per chiamare i binari nativi quando il suo nome è alias
beatcracker

Nessuno di questi PR viene unito. Sto solo dicendo.
Dan Friedman,

0

Inserisci Remove-Item alias:cur allo script di esecuzione automatica di PowerShell

sopra 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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.