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 isC:\Users\OD42B~1.BOR\AppData\Local\Temp
. -
Cmd
echo %temp%
output is the sameC:\Users\OD42B~1.BOR\AppData\Local\Temp
(butcd %temp%
works in the cmd). -
TEMP
environment variable in the UI is set properly (value shown is likec:\users\o.borolongprofilename\AppData\Local\Temp
).However
TEMP
value is shown like%USERPROFILE%\AppData\Local\Temp
when I try to editTEMP
using the UI. -
PowerShell
get-childitem env:userprofile
displays full name likec:\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