PowerShell uses the short 8.3 form for env:Temp

Please help me to deal with PowerShell environment variable.

I had learned that PowerShell has special syntax to access the system environment variable values. So I've tried to execute:

$env:Temp

in the PowerShell 6.2.4 console on Windows 10. The output is strange:

C:\Users\OD42B~1.BOR\AppData\Local\Temp

It has my Windows user name shortened to the 8.3 form. The problem is that I can't use the cd $env:temp command, it displays the following error:

cd : An object at the specified path C:\Users\OD42B~1.BOR does not exist.

But I can do cd %temp% in the cmd terminal.

I've tried Windows PowerShell app (%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe) but cd $env:Temp does not works either.

I've checked environment variable configuration option (Sytem properties\Environment variables) and both TEMP and TMP variables are shown using the long form profile folder name, like c:\users\o.borolongprofilename\AppData\Local\Temp.

How can I make cd $env:Temp work for a non-8.3 profile name in the PowerShell?

UPD

  • PowerShell get-childitem env:Temp output is C:\Users\OD42B~1.BOR\AppData\Local\Temp.

  • Cmd echo %temp% output is the same C:\Users\OD42B~1.BOR\AppData\Local\Temp (but cd %temp% works in the cmd).

  • TEMP environment variable in the UI is set properly (value shown is like c:\users\o.borolongprofilename\AppData\Local\Temp).

    However TEMP value is shown like %USERPROFILE%\AppData\Local\Temp when I try to edit TEMP using the UI.

  • PowerShell get-childitem env:userprofile displays full name like c:\users\o.borolongprofilename (surprise).

UPD2

I've just checked PowerShell 7 rc2 but the result is the same: cd $env:Temp does not work.

UPD3

Thank you for helping me. I've found the answer provided by the @Smock comment link:

cd (gi $env:temp).fullname


Thank you for helping me. I've found the answer provided by the @Smock comment link:

cd (gi $env:temp).fullname


I don't know what causes this, but you could add a small piece of powershell in your profile:

$env:TEMP = [Environment]::GetEnvironmentVariable("Temp", [EnvironmentVariableTarget]::User)

That way, $env:Temp will be updated each time you launch PowerShell