PowerShell: Env: éviter la troncature des variables d'environnement

16

PowerShell affiche les variables d'environnement, une ligne pour chacune. Si une variable a une valeur suffisamment longue, elle est tronquée et ajoutée des points de suspension:

> gci env:

Name                           Value
----                           -----
<suppressed lines>
PSModulePath                   C:\Windows\system32\WindowsPowerSh...
<suppressed lines>

Existe-t-il un moyen d'obtenir les valeurs complètes pour tous les vars à la fois, comme dans une invite cmd standard? (les réponses données pour Powershell get-childitem env: path renvoie une ligne ellipsée, comment avoir quelque chose d'utile? ne s'appliquerait pas, alors).

sancho.s Réintègre Monica
la source
J'ai passé une heure à rechercher des moyens d'obtenir PowerShell pour afficher le contenu complet de ma variable d'environnement de chemin. Il le tronque toujours à 2452 caractères, avec ou sans points de suspension, même si je spécifie un formatage plus large. Cela rend impossible de traiter la PS comme autre chose que trivialement utile. Mon opinion sur PS est que c'est un point de vente et rien n'a changé cela. J'ai lu des centaines de blogs et de résultats de recherche et personne n'a de solution. Pas même ici.
Suncat2000

Réponses:

21

Le formatage par défaut tronque, spécifiez -Wrap et voyez la sortie complète.

gci env: | Format-Table -Wrap -AutoSize

Résultat

PSModulePath            C:\Users\KNUCKLE-DRAGGER\Documents\WindowsPowerShell\Modules;C:\Windows\system32\WindowsPowerShell\v1.0\Modules\

ou si vous préférez que la sortie simule exactement cmd.exe, essayez

cmd /c start /b set

Résultat

PSModulePath=C:\Users\KNUCKLE-DRAGGER\Documents\WindowsPowerShell\Modules;C:\Windows\system32\WindowsPowerShell\v1.0\Modules\
Knuckle-Dragger
la source
C'est déjà très bien. Est-il possible d'obtenir le même format qu'une invite cmd standard? Peut-être en invoquant cmd.exe à partir de l'invite PowerShell?
sancho.s Réintègre Monica
Bon, c'est ce que je proposais.
sancho.s Réintègre Monica
4

Si vous souhaitez émuler la setsortie de PowerShell sans appeler, cmdessayez:

dir env: | %{"{0}={1}" -f $_.Name,$_.Value}

beaucoup de dactylographie, alors enveloppez-le dans une fonction:

function set {dir env: | %{"{0}={1}" -f $_.Name,$_.Value}}
zdan
la source
Les deux options fonctionnent bien.
sancho.s Réintègre Monica