Windows PowerShell exposes traditional shell environment variables on a drive named env. So, for example, the %TEMP% variable in a Cmd.exe shell can be found at env:\temp in PowerShell. You can access the contents of this variable using the Get-Content cmdlet:

 

<span style="color: black; text-decoration: none; text-underline: none">Get-Content env:\temp</h3>

 

This is a useful but awkward way to access a simple variable name. To more easily access the contents of variables and many other items in PowerShell drives, PowerShell provides a special compact notation that looks like this:

 

<span style="color: black; text-decoration: none; text-underline: none">$psdrive:item</h3>

 

In this statement, psdrive is the name of a drive (e.g., env), and item is the name of an item on that drive (e.g., the name "temp"). You can also use the same syntax to set the value of an environment variable:

 

<span style="color: black; text-decoration: none; text-underline: none">$env:newvar = "Some text"</h3>

 

The same technique works with other providers. You can see what cmdlet gc points to like this:

 

<span style="color: black; text-decoration: none; text-underline: none">$alias:gc</h3>

 

And you can see the code in the PowerShell prompt function with the command:

 

<span style="color: black; text-decoration: none; text-underline: none">$function:prompt</h3>

 

You can read more about PowerShell's use of traditional shell environment variables by running the following command at a PowerShell prompt:

 

<a name="_Hlk197770010"><span style="color: black; text-decoration: none; text-underline: none">help </h3></a><span style="color: black; text-decoration: none; text-underline: none">about_environment_variable</h3>