แสดงตัวแปรสภาพแวดล้อมทั้งหมดจากสคริปต์ PowerShell ที่รัน


111

ฉันต้องการแสดงตัวแปรสภาพแวดล้อมที่กำหนดค่าไว้ทั้งหมดในสคริปต์ PowerShell ที่รันไทม์ โดยปกติเมื่อแสดงตัวแปรสภาพแวดล้อมฉันสามารถใช้สิ่งใดสิ่งหนึ่งต่อไปนี้ที่เชลล์ (รวมถึงเทคนิคอื่น ๆ แต่สิ่งเหล่านี้ทำได้ง่าย):

gci env:*
ls Env:

อย่างไรก็ตามฉันมีสคริปต์ที่ถูกเรียกจากโปรแกรมอื่นและเมื่อฉันใช้หนึ่งในการเรียกข้างต้นในสคริปต์แทนที่จะนำเสนอด้วยตัวแปรสภาพแวดล้อมและค่าของมันฉันจะได้รับรายการSystem.Collections.DictionaryEntryประเภทแทนตัวแปรและค่าของมันแทน . ภายในสคริปต์ PowerShell ฉันจะแสดงตัวแปรสภาพแวดล้อมทั้งหมดได้อย่างไร

คำตอบ:


164

เวอร์ชันที่สั้นกว่า:

gci env:* | sort-object name

ซึ่งจะแสดงทั้งชื่อและค่า


1
คุณช่วยอธิบายได้ไหมว่าทำไมมันถึงเป็นแบบนั้นและคำสั่งของคุณแก้ไขอย่างไร
David Ferenczy Rogožan

3
นั่นเป็นสัญญาณของความคืบหน้าเพราะenvง่ายเกินไป ด่าคุณ M $ คน
matcheek


14

ในที่สุดฉันก็คลำหาวิธีแก้ปัญหาโดยทำซ้ำในแต่ละรายการในพจนานุกรม:

(gci env:*).GetEnumerator() | Sort-Object Name | Out-String

ไม่ทำงานบน Linux สำหรับฉัน คุณไม่gciได้รับรายการเด็กหรือไม่?
Thufir

ฉันยังไม่ได้ลองใช้กับ powershell core แต่ gci อยู่ในคำตอบของฉัน โปรดทราบว่าคำถามนี้ใช้สำหรับ [powershell] ไม่ใช่ [powershell-core] ดังนั้นวิธีแก้ปัญหาอาจใช้ไม่ได้ในภายหลัง
Bender the Greatest


1

ฉันไม่คิดว่าคำตอบใด ๆ ที่ให้มาเกี่ยวข้องกับคำถามนี้ OP กำลังรับรายการประเภทวัตถุ (ซึ่งเหมือนกันสำหรับสมาชิกแต่ละคน) ไม่ใช่ชื่อและค่าตัวแปรที่แท้จริง นี่คือสิ่งที่คุณต้องการ:

gci env:* | select Name,Value

ย่อจาก:

Get-ChildItem Env:* | Select-Object -Property Name,Value
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.