在常规 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 脚本中即可。