我创建了文件C:\Users\<myname>\Documents\WindowsPowerShell\profile.ps1
;但是,PowerShell 在启动时不会加载它。我测试了默认的 PowerShell 以及 VS Code 的集成 PowerShell。我还尝试将文件重命名profile.ps1
为Microsoft.PowerShell_profile.ps1
,但这没有任何改变。每次更改后,我都会重新启动相关应用程序。
运行Test-Path $profile.CurrentUserAllHosts
返回 True。
配置文件当前仅包含一行 ( Set-PSReadlineKeyHandler -Key Tab -Function Complete
)。启动 PowerShell 或 VS Code 的集成 shell 后,运行Get-PSReadlineKeyHandler | findstr -i Tab
显示尚未设置。从配置文件中复制并粘贴该行,运行它,然后Get-...
再次运行该命令显示它已正确设置,并且更改按预期进行。重新启动 shell 将恢复为默认值。
我是否需要执行其他步骤才能让 PowerShell 执行配置文件?(我有 Linux/UNIX 背景,我认为 PowerShell 的工作方式类似,但 PowerShell 的设计当然完全不同)。如果没有额外的步骤,为什么 PowerShell 在这种情况下不加载配置文件?
附加信息:
> $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 : C:\Users\<myname>\Documents\WindowsPowerShell\profile.ps1
CurrentUserCurrentHost : C:\Users\<myname>\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
Length : 76
答案1
解决方案:改变执行策略
- 以管理员身份启动 PowerShell
Set-ExecutionPolicy -ExecutionPolicy Unrestricted
错误信息如图所示:
. : File C:\Users\<myname>\Documents\WindowsPowerShell\profile.ps1 cannot be loaded because running scripts is disabled on this system. For more information, see about_Execution_Policies at http://go.microsoft.com/fwlink/?LinkID=135170.
At line:1 char:3
+ . 'C:\Users\<myname>\Documents\WindowsPowerShell\profile.ps1'
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : SecurityError: (:) [], PSSecurityException
+ FullyQualifiedErrorId : UnauthorizedAccess
课程:
奇怪的是,以前我每次启动 PS 时都会看到一条错误消息(并不重要),所以我习惯忽略它。创建该profile.ps1
文件导致执行策略错误出现,但也导致先前的错误停止出现,所以我直接跳过了它,因为如果不看细节的话,它看起来就像是同一块红色文本。(由于某种原因,以前的错误现在似乎无法复制。)
最后,问题可以描述为“用户习惯于忽略琐碎而不重要的错误,因此重要的错误被忽视了。”