如何配置 PowerShell ISE,以便它在我关闭时为之前打开的每个文件打开选项卡?
这特别有用,因为我通常会回来处理相同的脚本或一组脚本。
答案1
不幸的是,我无法让它自动运行/按计时器运行。它使用了一个$psISE
变量,我不知道如何通过后台作业或注册事件来访问它。
您需要编辑您的 ISE 配置文件,您可能需要创建它,它通常位于 C:\Users_USERNAME_\Documents\WindowsPowerShell\Microsoft.PowerShellISE_profile.ps1
首先,指定保存已打开内容的信息的位置:
$SavePath = Join-Path -Path (Split-Path -Path $profile) -ChildPath 'openFiles.txt'
最终结果将出现在与配置文件位于同一文件夹中的 txt 文件中。
然后检查文件是否存在,并打开其中列出的文件。
if (Test-Path -Path $SavePath)
{
$OpenFiles = Import-Csv -Path $SavePath
psEdit -filenames $OpenFiles
}
这个谜题的最后一部分是一个函数,它抓取当前打开的文件,并将它们的完整路径转储到 txt 文件中。
function Save-OpenFile {
$Files = @()
foreach ($Tab in $psISE.PowerShellTabs)
{
foreach ($File in ($Tab.Files | Where-Object { !$_.IsUntitled }))
{
$Files += $File.FullPath
}
}
$Files | Out-File -FilePath $SavePath
}
偶尔运行Save-OpenFile
一次(在关闭 ISE 之前),此时您打开的内容将重新打开。正如我在本文开头所说的,如果可以在 ISE 关闭时自动触发此功能,那就太好了,但我无法在这样的事件中访问信息。
您可以通过为该函数添加别名来简化事情,或者执行其他操作将其添加到您的常规工作流程中,以便让您养成定期运行它的习惯。
希望这对您有所帮助或帮助您找到完整的解决方案。
注意:某些替代的 PowerShell 编辑器会在会话之间重新打开您的文档,因此如果您坚持这样做,您可能需要将其作为选项进行研究。
答案2
你也可以运行:
停止进程$pid-Force
这将终止 ISE 的进程,并且下次运行 ISE 时它会提示重新加载最后的选项卡。