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