PowerShell использует краткую форму 8.3 для env:Temp
Пожалуйста, помогите мне разобраться с переменной среды PowerShell.
Я узнал, что PowerShell имеет специальный синтаксис для доступа к значениям системных переменных среды. Поэтому я попытался выполнить:
$env:Temp
В консоли PowerShell 6.2.4 в Windows 10. Вывод странный:
C:UsersOD42B~1.BORAppDataLocalTemp
В нем мое имя пользователя Windows сокращено до формы 8.3.
Проблема в том, что я не могу использовать команду cd $env:temp, она выводит следующую ошибку:
cd : An object at the specified path C:UsersOD42B~1.BOR does not exist.
Но я может сделать cd %temp% в терминале cmd.
Я пробовал приложение Windows PowerShell (%SystemRoot%system32WindowsPowerShellv1.0powershell.exe), но cd $env:Temp тоже не работает.
Я проверил параметр конфигурации переменных среды (Свойства системыПеременные среды), и обе переменные TEMP и TMP отображаются с использованием имени папки профиля длинной формы, например c:userso.borolongprofilenameAppDataLocalTemp.
Как я могу заставить cd $env:Temp работать с именем профиля, отличным от 8.3, в PowerShell?
UPD
-
PowerShell
get-childitem env:Tempвывод:C:UsersOD42B~1.BORAppDataLocalTemp. -
Cmd
echo %temp%вывод такой жеC:UsersOD42B~1.BORAppDataLocalTemp(ноcd %temp%работает в cmd). -
TEMPпеременная среды в пользовательском интерфейсе установлена правильно (показанное значение похожеc:userso.borolongprofilenameAppDataLocalTemp).Однако
TEMPзначение отображается как%USERPROFILE%AppDataLocalTemp, когда я пытаюсь отредактироватьTEMPс помощью пользовательского интерфейса. -
PowerShell
get-childitem env:userprofileотображает полное имя, напримерc:userso.borolongprofilename(сюрприз).
ОБНОВЛЕНИЕ 2
Я только что проверил PowerShell 7 rc2, но результат тот же: cd $env:Temp не работает.
ОБНОВЛЕНИЕ 3
Спасибо, что помогли мне. Я нашел ответ , предоставленный ссылкой на комментарий @Smock:
cd (gi $env:temp).fullname