Exibir todas as variáveis ​​de ambiente de um script PowerShell em execução

104

Preciso exibir todas as variáveis ​​de ambiente configuradas em um script do PowerShell em tempo de execução. Normalmente, ao exibir variáveis ​​de ambiente, posso apenas usar um dos seguintes no shell (entre outras técnicas, mas estas são simples):

gci env:*
ls Env:

No entanto, tenho um script sendo chamado de outro programa e, quando uso uma das chamadas acima no script, em vez de ser apresentado com variáveis ​​de ambiente e seus valores, recebo uma lista de System.Collections.DictionaryEntrytipos em vez das variáveis ​​e seus valores . Dentro de um script do PowerShell, como posso exibir todas as variáveis ​​de ambiente?

Bender the Greatest
fonte

Respostas:

156

Versão mais curta:

gci env:* | sort-object name

Isso exibirá o nome e o valor.

Jaymjarri
fonte
1
Você poderia explicar por que ele se comporta assim e como seu comando o corrige, por favor?
David Ferenczy Rogožan
3
Esse é o sinal de progresso porque envera muito fácil. Malditos M $ pessoas.
matcheek
36

Versão mais curta (com variáveis ​​classificadas por nome):

gci env:
Vlad Rudenko
fonte
14

Finalmente encontrei uma solução, iterando cada entrada no dicionário:

(gci env:*).GetEnumerator() | Sort-Object Name | Out-String
Bender the Greatest
fonte
não funciona no Linux para mim. Você está faltando gcipara obter os itens filhos?
Thufir
Eu não tentei isso no núcleo do PowerShell, mas gci está na minha resposta. Observe que esta questão é para [powershell] e não [powershell-core], portanto, as soluções podem não funcionar para o último.
Bender the Greatest
7

Versão curta com filtro curinga :

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