PowerShell 使用 8.3 版的简短格式表示 env:Temp

PowerShell 使用 8.3 版的简短格式表示 env:Temp

请帮我处理 PowerShell 环境变量。

我了解到 PowerShell 具有访问系统环境变量值的特殊语法。因此我尝试执行:

$env:Temp

在 Windows 10 上的 PowerShell 6.2.4 控制台中。输出很奇怪:

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

它将我的 Windows 用户名缩短为 8.3 格式。问题是我无法使用该cd $env:temp命令,它显示以下错误:

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

但我可以cd %temp%cmd终端上执行。

我尝试过 Windows PowerShell 应用程序(%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe),但cd $env:Temp也没有用。

我已经检查了环境变量配置选项(系统属性\环境变量),并且TEMPTMP变量都使用长格式的配置文件文件夹名称显示,例如c:\users\o.borolongprofilename\AppData\Local\Temp

如何cd $env:Temp在 PowerShell 中使非 8.3 配置文件名称起作用?

更新型多巴胺

  • PowerShellget-childitem env:Temp输出是C:\Users\OD42B~1.BOR\AppData\Local\Temp

  • Cmdecho %temp%输出相同C:\Users\OD42B~1.BOR\AppData\Local\Temp(但cd %temp%在 cmd 中有效)。

  • TEMPUI 中的环境变量设置正确(显示的值如下c:\users\o.borolongprofilename\AppData\Local\Temp)。

    但是当我尝试使用 UI进行编辑时TEMP,会显示相应的值。%USERPROFILE%\AppData\Local\TempTEMP

  • PowerShellget-childitem env:userprofile显示全名如c:\users\o.borolongprofilename(惊讶)。

UPD2

我刚刚检查了 PowerShell 7 rc2,但结果是一样的:cd $env:Temp不起作用。

UPD3

谢谢你的帮助。我已经找到答案由@Smock评论链接提供:

cd (gi $env:temp).fullname

答案1

谢谢你的帮助。我发现答案由@Smock评论链接提供:

cd (gi $env:temp).fullname

答案2

我不知道是什么原因造成的,但你可以在你的个人资料中添加一小段 powershell:

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

这样,$env:Temp每次启动 PowerShell 时都会更新

答案3

您还可以从注册表值中获取路径并使用它:

但不要使用这个:HKCU\Environment

[HKCU:\Environment]
@TEMP=%USERPROFILE%\AppData\Local\Temp
TEMP    REG_EXPAND_SZ    %USERPROFILE%\AppData\Local\Temp

输出还附带: %USERPROFILE%, 所以....



...尝试使用此注册表项:HKCU\Environment

[HKCU:\Volatile Environment]
@LOCALAPPDATA=C:\Users\ecker\AppData\Local
LOCALAPPDATA    REG_SZ    C:\Users\ecker\AppData\Local

并且仅将输出序列与以下内容连接:TEMP ==> "$path_str\TEMP"


$path_str = (Get-ItemProperty "HKCU:\Volatile Environment")|Select-Object -ExpandProperty LOCALAPPDATA | Resolve-path ; cd "$path_str\TEMP"

# Or using aliases #

$path_str = (gp "HKCU:\Volatile Environment")|select -ExpandProperty LOCALAPPDATA | rvpa ; cd "$path_str\TEMP"

相关内容