当前位置:  开发笔记 > 开发工具 > 正文

如何从PowerShell中的脚本文件重新加载用户配置文件

如何解决《如何从PowerShell中的脚本文件重新加载用户配置文件》经验,为你挑选了3个好方法。

我想从脚本文件重新加载我的用户配置文件.我认为从脚本文件中获取点可以解决这个问题,但它不起作用:

# file.ps1
. $PROFILE

但是,如果我从PowerShell的解释器中获取它,它确实有效.

我为什么要这样做?

我每次更新我的配置文件并且想要测试它时都会运行此脚本,因此我希望避免重新启动PowerShell来刷新环境.



1> Steven Muraw..:

如果要从脚本全局刷新配置文件,则必须运行该脚本"dot-sourced".

运行脚本时,所有配置文件脚本都在"脚本"范围内运行,不会修改"全局"范围.

为了使脚本能够修改全局范围,它必须是"点源"或以句点开头.

. ./yourrestartscript.ps1

你在"yourrestartscript.ps1"里面有你的个人资料脚本"dot-sourced".你实际上在做的是告诉"yourrestartscript"在当前范围内运行并在该脚本中,你告诉$ profile脚本在脚本的范围内运行.由于脚本的范围是全局范围,因此配置文件中的任何变量集或命令都将在全局范围内发生.

这并不比跑步更有利于你

. $profile



2> Winston Fass..:

因此,您标记为答案的方法可能在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 $_"
            . $_
        }
    }    
}


第一次如何重新加载个人资料?:)

3> 小智..:
& $profile   

可以重新加载配置文件.

如果您的配置文件设置别名或执行失败的导入,那么您将看到错误,因为它们已在先前加载的配置文件中设置.


由于某些原因,这不适用于新定义的函数
推荐阅读
TXCWB_523
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有