如何在 PowerShell ISE 中自动清理脚本范围的变量?

如何在 PowerShell ISE 中自动清理脚本范围的变量?

在常规 PowerShell 控制台中工作时,脚本中创建的变量将在脚本终止时自动清除,除非它们被提升到更大的范围。然而,在 PowerShell ISE 的控制台中似乎并非如此。在我运行脚本后,它的变量仍然存在,即使它们默认应该局限于脚本的范围。

rv到目前为止,我见过的唯一清理方法是在脚本末尾添加很多行,当脚本在 PowerShell 中正常运行时,这些行是不必要的。我还必须记住rv在运行脚本片段时运行,除非我真的希望变量在会话中保留更长时间。

有没有什么方法可以配置 PowerShell ISE,使其更像实际的 PowerShell 控制台?

答案1

F5 有问题 - 它实际上并没有运行你的脚本,而是对其进行了点源处理。我创建了功能 + 分离键绑定来四处走动。这是我以前工作的更大项目的一部分(Codeplex 上的 ISEFun). 较短的版本(将保存现有脚本并将“无标题”转换为脚本块):

$InvokeScript = {
    if ($file = $psISE.CurrentFile) {
        if (Test-Path $file.FullPath) {
            if ($file.FullPath -match '\.ps1$') {
                if (! $file.IsSaved) {
                    $file.Save()
                }
                # Script - we run it...
                & $file.FullPath
            }
        } else {
            & ([scriptblock]::Create($file.Editor.Text))
        }
    }
}

$psISE.CurrentPowerShellTab.AddOnsMenu.Submenus.Add(
    "Invoke script",
    $InvokeScript,
    'F4'
)

从现在起,您可以使用 F4 代替 F5,并保持会话干净。要每次都获取它,您只需将其添加到 $profile 脚本中即可。

相关内容