gpt4 book ai didi

powershell - Windows Powershell $profile 不显示真实路径

转载 作者:行者123 更新时间:2023-12-03 06:45:07 25 4
gpt4 key购买 nike

我启动 Windows Powershell(通过按 Windows 键,输入“powershell”并按 Enter 键启动 C:\Windows\System32\WindowsPowerShell\v1.0)并输入 $profile 并按 Enter 键并查看 WindowsPowerShell\Microsoft.PowerShell_profile.ps1

据我所知,这不是一条有效的路径。我希望有类似 C:\Windows\...

的东西

当我输入$profile | Format-List * -Force,但是,有一些进展,我得到了

AllUsersAllHosts       : C:\Windows\System32\WindowsPowerShell\v1.0\profile.ps1
AllUsersCurrentHost : C:\Windows\System32\WindowsPowerShell\v1.0\Microsoft.PowerShell_profile.ps1
CurrentUserAllHosts : WindowsPowerShell\profile.ps1
CurrentUserCurrentHost : WindowsPowerShell\Microsoft.PowerShell_profile.ps1
Length : 50

但是,CurrentUserAllHostsCurrentUserCurrentHosts 仍然是非路径。这些非路径是什么意思?它们是否引用了一些隐藏值,或者我是否需要在某处设置一些系统值?

这是我的$PsVersionTable.PsVersion

Major  Minor  Build  Revision
----- ----- ----- --------
5 1 14393 206

这是Get-Host的结果

Name             : ConsoleHost
Version : 5.1.14393.206
InstanceId : a2a61a42-f2ee-46b9-b67a-ef441301bdb8
UI : System.Management.Automation.Internal.Host.InternalHostUserInterface
CurrentCulture : en-US
CurrentUICulture : en-US
PrivateData : Microsoft.PowerShell.ConsoleHost+ConsoleColorProxy
DebuggerEnabled : True
IsRunspacePushed : False
Runspace : System.Management.Automation.Runspaces.LocalRunspace

最佳答案

注意:这个问题不是关于$PROFILE文件,只是不存在,可能以及其目录。如果 $PROFILE 显示预期路径,并且您只是想确保该文件存在,请使用
if (-not (Test-Path $PROFILE)) { $null = New-Item -Force $PROFILE }

tl;博士:

问题可能与 PowerShell 无关,但可能是由于注册表中缺少特殊文件夹路径定义造成的。

验证注册表项 HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders 是否包含名为 PersonalREG_EXPAND_SZ 值数据 %USERPROFILE%\Documents - 请参阅下面的诊断命令。

如果您发现必须(重新)创建它,请使用:

New-ItemProperty `
'HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders' `
Personal -Value '%USERPROFILE%\Documents' -Type ExpandString -Force

然后注销并重新启动(或重新启动)以查看是否解决了问题。

<小时/>

Eris's helpful answer告诉我们特定于用户的 PS 配置文件路径源自 Environment.GetFolderPath(Environment.SpecialFolder.Personal) 返回的内容

.NET 可能通过 SHGetKnownFolderPath 获取此值Shell API 函数,来自注册表项 HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders,值 Personal,通常定义为 REG_EXPAND_SZ 值包含(可扩展)字符串 %USERPROFILE%\Documents
(还有一个旧的后备位置 - 请参阅 here 。)

配置文件 CurrentUserAllHostsCurrentUserCurrentHost 仅包含相对路径,即:

  • WindowsPowerShell\profile.ps1
  • WindowsPowerShell\Microsoft.PowerShell_profile.ps1

表明 Environment.GetFolderPath(Environment.SpecialFolder.Personal) 调用(其结果用作路径前缀)意外返回空字符串,这又表明存在注册表问题

<小时/>

以下是一些诊断命令及其预期输出(jdoe 代表您的用户名):

# Verify that %USERPROFILE% is defined.
> $env:USERPROFILE
C:\Users\jdoe

# Verify that %USERPROFILE% is defined in the registry.
> Get-ItemPropertyValue 'HKCU:\Volatile Environment' USERPROFILE
C:\Users\jdoe

# Verify that the API call to retrieve the known folder
# "Personal" (Documents) returns the expected value.
> [Environment]::GetFolderPath('Personal')
C:\Users\jdoe\Documents

# See if the registry contains the expected definition.
> Get-ItemPropertyValue 'HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders' Personal
C:\Users\jdoe\Documents

关于powershell - Windows Powershell $profile 不显示真实路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39809315/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com