PowerShell ISE 打开以前的文件

PowerShell ISE 打开以前的文件

如何配置 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 时它会提示重新加载最后的选项卡。

相关内容