Author Posts

June 16, 2015 at 8:30 am

I recently ran into this issue where I create an environment variable with PowerShell using the following commands and then when I check I still don't see the variable under System Properties > Environment Variables > User or System variables.

PS C:\WINDOWS\system32> cd env:
New-Item -Name ENV1 -Value "C:\Program Files\env"
PS Env:\> dir

Name Value
—- —–
ENV1 C:\Program Files\env

No such a variable shows under System or User Variables in GUI.
does anyone have the same experience or a solution? I tried this on Windows 7 and 8. with PowerShell 3.0 and 4.0

June 16, 2015 at 8:35 am

When you modify PowerShell's "Env:" drive, you're creating process environment variables. (This is the same as the SET command in the old DOS prompt).

If you want to persist environment variables, they go into the registry, and the .NET framework has methods for writing to those: https://msdn.microsoft.com/en-us/library/96xafkes(v=vs.110).aspx

Example:

[Environment]::SetEnvironmentVariable('MyVariableName', 'Some Value', 'Machine')

The third parameter can be either 'Machine', 'User', or 'Process'; Process is the same thing that you would achieve by modifying the Env: drive.

June 17, 2015 at 2:30 am

Alternatively, you can use the setx command to set a environment variable either system wide/user. But if you use it on a cmd/ps window, the current session will not reflect the env variable, but you can manually set it it using set command.

setx /m ENV1 "C:\Program Files" 

June 18, 2015 at 6:38 pm

and without specifying any parameter or the /m switch I can get my environment variable to register/show under User Variables.

PowerShell Rocks! Thanks very much.