我想从脚本文件重新加载我的用户配置文件.我认为从脚本文件中获取点可以解决这个问题,但它不起作用:
# file.ps1 . $PROFILE
但是,如果我从PowerShell的解释器中获取它,它确实有效.
我为什么要这样做?
我每次更新我的配置文件并且想要测试它时都会运行此脚本,因此我希望避免重新启动PowerShell来刷新环境.
如果要从脚本全局刷新配置文件,则必须运行该脚本"dot-sourced".
运行脚本时,所有配置文件脚本都在"脚本"范围内运行,不会修改"全局"范围.
为了使脚本能够修改全局范围,它必须是"点源"或以句点开头.
. ./yourrestartscript.ps1
你在"yourrestartscript.ps1"里面有你的个人资料脚本"dot-sourced".你实际上在做的是告诉"yourrestartscript"在当前范围内运行并在该脚本中,你告诉$ profile脚本在脚本的范围内运行.由于脚本的范围是全局范围,因此配置文件中的任何变量集或命令都将在全局范围内发生.
这并不比跑步更有利于你
. $profile
因此,您标记为答案的方法可能在Powershell命令提示符下工作,但它在PowerShell ISE中无效(对我来说,它提供了一个优秀的PowerShell会话),并且可能无法在其他PowerShell环境中正常工作.
这是我已经使用了一段时间的脚本,它在各种环境下都能很好地适用于我.我只是将这个函数放到〜\ Documents\WindowsPowerShell的Profile.ps1中,每当我想重新加载我的配置文件时,我都会点源函数,即
. Reload-Profile
这是功能:
function Reload-Profile { @( $Profile.AllUsersAllHosts, $Profile.AllUsersCurrentHost, $Profile.CurrentUserAllHosts, $Profile.CurrentUserCurrentHost ) | % { if(Test-Path $_){ Write-Verbose "Running $_" . $_ } } }
& $profile
可以重新加载配置文件.
如果您的配置文件设置别名或执行失败的导入,那么您将看到错误,因为它们已在先前加载的配置文件中设置.