Bagaimana cara menghapus alias Powershell default secara permanen?

22

Untuk beberapa alasan yang tidak diketahui, devs memasukkan "curl" sebagai alias untuk Invoke-WebRequest, meskipun tidak kompatibel dengan implementasi curl yang tepat, yang berarti ia menghalangi ketika saya mencoba membuat permintaan curl. Saya dapat menghapus alias menggunakan Remove-Item alias:curl, tetapi lain kali saya memulai Powershell, alias telah kembali. Apakah ada cara untuk menghapusnya secara permanen tanpa harus menjalankan skrip setiap kali saya mulai?

Nathan Ridley
sumber
hanya FYI: Saya telah mengeluarkan perintah yang sama Remove-Item alias:curldi dalam windows server 2019 dan itu tidak muncul lagi bahkan setelah
memulihkan

Jawaban:

33

Lewati langkah ini jika Anda sudah memiliki profil Powershell:

New-Item $profile -force -itemtype file

Kemudian edit profil Anda:

notepad $profile

Tambahkan baris berikut ke dalamnya:

remove-item alias:curl

Simpan, tutup notepad dan muat ulang profil dengan perintah di bawah ini atau tutup dan buka Powershell untuk menerapkan profil:

. $profile
megamorf
sumber
1
Terima kasih. Saya harus mengatakan itu menjengkelkan bahwa pengembang PowerShell tidak memikirkan hal ini, memaksa kami untuk sekarang harus mengatasi masalah dengan cara ini.
Nathan Ridley
Saya tidak berpikir itu dimaksudkan untuk menjadi pengganti 1: 1. Powershell berfokus pada penggunaan menyeluruh dari serangkaian parameter yang ditentukan dan pengikatan parameter otomatis (yang benar-benar hebat setelah Anda memasukinya). Menyediakan alias ikal adalah untuk menunjukkan kepada orang-orang yang terbiasa dengan * nix bahwa ada ikal yang setara di Powershell.
megamorf
1
Langkah pertama selalu bisa dilewati. Saya baru saja melakukannya, dan mendapat pop-up yang menanyakan apakah saya ingin membuat file.
np8
FYI: Untuk beberapa alias, Anda harus menambahkan "-Force"
Dan Friedman
Yang "lucu" adalah bahwa bahkan dokumen azure menunjukkan perintah keriting untuk dengan cepat menguji sesuatu. Perintah ikal nyata, bukan Invoke-WebRequestsintaks ...
Akos Lukacs
4

Saya akan tetap menggunakan curl.exebukan hanya curl. Pendekatan ini tidak bergantung pada PowerShell yang berjalan dengan profil tertentu (dan PowerShell dapat dijalankan tanpa profil sama sekali menggunakan -NoProfilesakelar).

beatcracker
sumber
1
Saya bisa berpendapat bahwa dalam teori, PowerShell akhirnya dapat berjalan di unix, di mana file program tidak memiliki ekstensi ".exe". Sangat tidak masuk akal untuk menyatukan orang agar alias diaktifkan di skrip . Saya harus bertanya-tanya apakah pilihan desain yang buruk itu disengaja untuk mencoba membunuh tumpukan perangkat lunak GNU opensource di windows. Dan mengapa kita tidak setidaknya memiliki "perintah" built-in untuk memaksa shell mencari program yang sebenarnya? Powershell benar-benar gagal pada prinsip KISS.
Johan Boulé
1
@ JohanBoulé Tidak perlu teori konspirasi, itu hanya kekhilafan. PowerShell 6 sudah berjalan di Linux dan masalah alias sebagian sudah diperbaiki. Lihat tautan ini: inisialisasi: hapus alias curl dan wget , Harap hapus semua alias bawaan dan masukkan ke dalam modul , Berikan sintaks untuk memanggil binari asli saat namanya
diubah
Tidak ada PR yang digabung. Hanya mengatakan.
Dan Friedman
0

tambahkan Remove-Item alias:curke skrip autorun powershell

di atas 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
STTR
sumber