我启动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
但CurrentUserAllHosts
和CurrentUserCurrentHosts
仍然是非路径。这些非路径是什么意思?它们是指某些隐藏的值还是我需要在某处设置一些系统值?
这是我的$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
答案 0 :(得分:8)
根据github上的powershell源代码,他们会查找Environment.SpecialFolder.Personal
从ConsoleHost.cs开始
并且您可以将其跟踪到utils.cs,他们会拨打Environment.GetFolderPath(Environment.SpecialFolder.Personal);
答案 1 :(得分:8)
<强> TL;博士强>:
问题可能与PowerShell无关,但可能是由于注册表 中缺少特殊文件夹路径定义。< / p>
验证注册表项HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders
是否包含名为REG_EXPAND_SZ
且数据为Personal
的{{1}}值 - 请参阅下面的诊断命令。
如果您发现必须(重新)创建它,请使用:
%USERPROFILE%\Documents
然后注销并重新启动(或重启)以查看是否解决了问题。
Eris's helpful answer告诉我们 用户特定的 PS个人资料路径来自New-ItemProperty `
'HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders' `
Personal -Value '%USERPROFILE%\Documents' -Type ExpandString -Force
返回的内容。
.NET可能通过SHGetKnownFolderPath
Shell API函数从注册表项Environment.GetFolderPath(Environment.SpecialFolder.Personal)
获取此值,值HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders
,通常将其定义为Personal
值包含(可扩展)字符串REG_EXPAND_SZ
(还有一个传统的后备位置 - 请参阅here。)
仅包含相对路径的个人资料%USERPROFILE%\Documents
和CurrentUserAllHosts
,
CurrentUserCurrentHost
WindowsPowerShell\profile.ps1
建议 WindowsPowerShell\Microsoft.PowerShell_profile.ps1
调用,其结果用作路径前缀,意外返回空字符串,这反过来暗示了注册表问题。
以下是一些诊断命令及其预期输出(Environment.GetFolderPath(Environment.SpecialFolder.Personal)
代表您的用户名):
jdoe