无需退出即可刷新/重新启动PowerShell会话

时间:2012-07-18 16:29:40

标签: session powershell restart

我一直在调整我的PowerShell配置文件中的一些脚本,它已经很烦人退出PowerShell然后重新启动它,因此它将加载我对我的配置文件中的脚本所做的任何更改。是否可以在不退出的情况下重新启动powershell会话?

5 个答案:

答案 0 :(得分:10)

您可以. $profile再次获取个人资料。

答案 1 :(得分:5)

@manojlds的答案是正确的,但最终可能会抛出错误。例如,如果您在个人资料中定义了新的PSDrive,那么重新点源可能会导致错误。

另一种方法是首先启动PowerShell,然后只需键入PowerShell立即启动另一个版本。我在嵌套控制台中对我的配置文件进行了更改,退出,然后重新运行PowerShell以测试更新的配置文件。

另一件事 - 让配置文件变得缓慢而谨慎。在我看来,虽然配置文件确实需要发展,但这种演变通常应该很慢。 YMMV !!

答案 2 :(得分:4)

您可以创建一个简单的函数并将其添加到$profile(或创建一个模块,然后导入到'$ profile'),例如:

function Restart-PowerShell{
    Start-Process PowerShell # Launch PowerShell host in new window
    exit # Exit existing PowerShell host window
}
# Add any alias if you want, for ex. rps (rp already occupied by "Remove-ItemProperty”)
Set-Alias -Name rps -Value Restart-PowerShell

注意:虽然这可能不完全是您在问题标题中写的“w / out exiting”,但实际上,如果您的初衷是要进行某种重启PowerShell主机命令(这不是默认情况下在PS中可用)然后它将完成工作......

答案 3 :(得分:4)

这将在同一控制台窗口中启动一个新会话,重新加载您的配置文件:

ggplot(discharge) +
  geom_line(aes(x = date, y = discharge)) +
  geom_hline(yintercept = 5.5, linetype= "dashed", color = "red") + 
  annotate("text", x = discharge$date[13]-30, y = 5.5, label = "High")+
  coord_cartesian(xlim = c(discharge$date[13], max(discharge$date)),  clip = 'off') 

您当然会丢失上一届会议的所有变量等。

答案 4 :(得分:0)

这里是@Bad答案的扩展。现在,它将处理ISE(因为我一直都在使用它)。

想法是,如果您在ISE中,它将重新启动ISE。如果您使用的是纯PowerShell,它将重新启动纯PowerShell。 Get-PSHostProcessInfo返回有关当前PowerShell会话的信息,该信息使您可以确定是否正在运行ISE。

function Restart-PowerShell
{
    if((Get-PSHostProcessInfo).ProcessName.Contains('powershell_ise'))
    {
        Start-Process 'powershell_ise.exe'
    } else {
        Start-Process 'powershell.exe'
    }
    exit
}