Tampilkan semua variabel lingkungan dari skrip PowerShell yang sedang berjalan

104

Saya perlu menampilkan semua variabel lingkungan yang dikonfigurasi dalam skrip PowerShell saat runtime. Biasanya ketika menampilkan variabel lingkungan, saya hanya dapat menggunakan salah satu dari yang berikut di shell (di antara teknik lain, tetapi ini sederhana):

gci env:*
ls Env:

Namun, saya memiliki skrip yang dipanggil dari program lain, dan ketika saya menggunakan salah satu panggilan di atas dalam skrip, alih-alih disajikan dengan variabel lingkungan dan nilainya, saya malah mendapatkan daftar System.Collections.DictionaryEntryjenis alih-alih variabel dan nilainya . Di dalam skrip PowerShell, bagaimana cara menampilkan semua variabel lingkungan?

Bender the Greatest
sumber

Jawaban:

156

Versi lebih pendek:

gci env:* | sort-object name

Ini akan menampilkan nama dan nilainya.

jaymjarri
sumber
1
Bisakah Anda menjelaskan mengapa itu berperilaku seperti itu dan bagaimana perintah Anda memperbaikinya?
David Ferenczy Rogožan
3
Itu pertanda kemajuan karena envterlalu mudah. Sialan Anda M $ orang.
matcheek
36

Versi terpendek (dengan variabel diurutkan berdasarkan nama):

gci env:
Vlad Rudenko
sumber
14

Saya akhirnya mencari solusi dengan mengulangi setiap entri di kamus:

(gci env:*).GetEnumerator() | Sort-Object Name | Out-String
Bender the Greatest
sumber
tidak berjalan di Linux untuk saya. Apakah Anda kehilangan gciuntuk mendapatkan item anak?
Thufir
Saya belum mencoba ini pada inti PowerShell, tetapi gci ada di jawaban saya. Perhatikan bahwa pertanyaan ini untuk [PowerShell] dan bukan [PowerShell-Core], jadi solusi mungkin tidak berfungsi untuk yang terakhir.
Bender the Greatest
7

Versi singkat dengan filter kartu liar :

gci env: | where name -like 'Pro*'
Emil
sumber