My PowerShell_ISE Profile

[UDPATE – the original post had a script which did not work with CTP3 so I’ve replaced it with the correct version.  Apologizes for the screw up.
I’ve updated the attached file as well. – jps] 


I thought I would share my PowerShell_ISE profile with you.  I haven’t done anything to clean this up or document it which I should do before sharing but I figured that it would be better to get some good examples out there and then I can clean it up later.


 


# I’m doing a lot of work with Modules these days so I added a drive to make it easy to
# get to.


New-PsDrive -Name Mod -PSProvider FileSystem -Root (($env:PSMODULEPATH -split “;”)[0])
Set-Alias Open PowerShell_ise


<#
This function is now built-in to the editor so it is no longer needed. 
I’m keeping it here so you can see how it works.
function GoTo-Line
{
    $ed = $psise.CurrentOpenedFile.Editor
    [int]$l = read-host
    if ($l -le $ed.LineCount)
    {
        $ed.SetCaretPosition($l,1)
    }
    else
    {O
        $ed.SetCaretPosition($ed.LineCount,1)
    }
}
#>
function Edit-Selected
{
    $ed = $psise.CurrentOpenedFile.Editor
    PowerShell_ise $ed.SelectedText
}


function global:Export-SessionFiles
{
    $psise.CurrentOpenedRunspace.OpenedFiles |%{
       if (!$_.isSaved)
       {
           $title = “Save File?”
           $message = “Do you want to Save `n`t$($_.FullPath)`nbefore exporting?”


           $yes = New-Object System.Management.Automation.Host.ChoiceDescription “&Yes”, `
                “Save $($_.FullPath).”


           $no = New-Object System.Management.Automation.Host.ChoiceDescription “&No”, `
                “Export but do not save $($_.fullpath).”


           $options = [System.Management.Automation.Host.ChoiceDescription[]]($yes, $no)


           if (($host.ui.PromptForChoice($title, $message, $options, 0)) -eq 0)
           {
               $_.Save()
           }
       }
       $psise.CurrentOpenedRunspace.Output.InsertText(“`nExporting $($_.FullPath)”)
        $_.FullPath
    } > ~/ISE-SessionFiles.txt
}


function Import-SessionFiles
{
    cat ~/ISE-SessionFiles.txt | %{ $psise.CurrentOpenedRunspace.OpenedFiles.add($_) }
}


$null = $psISE.CustomMenu.Submenus.Add(“Edit Selected”, {Edit-Selected}, ‘Ctrl+E’)
$null = $psISE.CustomMenu.Submenus.Add(“Export Session Files”, {Export-SessionFiles}, ‘Ctrl+SHIFT+E’)
$null = $psISE.CustomMenu.Submenus.Add(“Import Session Files”, {Import-SessionFiles}, ‘Ctrl+SHIFT+I’)


 


Enjoy


Jeffrey Snover [MSFT]
Windows Management Partner Architect
Visit the Windows PowerShell Team blog at:    http://blogs.msdn.com/PowerShell
Visit the Windows PowerShell ScriptCenter at:  http://www.microsoft.com/technet/scriptcenter/hubs/msh.mspx

Microsoft.PowerShellISE_Profile.ps1