Getting the current input text from PowerShell ISE

This topic contains 3 replies, has 2 voices, and was last updated by  Warren Frame 3 years, 10 months ago.

  • Author
    Posts
  • #11655

    Warren Frame
    Participant

    Greetings,

    *edit: I must have been doing something wrong. I was getting no helpful information from this node: $psise.CurrentPowerShellTab.ConsolePane. Yet when I explored this using Raimund Andrée's VariableExplorer, the info was there. Thanks anyhow!

    I'm looking to customize my ISE a bit. One piece I'm missing is the ability to extract text and contextual information from the console pane. For example, if I've typed up a command but have not executed it yet, I want to click a function and take action based on that function (similar to how F1 opens help in a window). I can use code to do this for the editor pane from this handy post.

    I've tried writing a scriptblock to serialize $psise, putting in some random commands in the PowerShell pane, and pressing the shortcut to the scriptblock... I don't see anything in the resulting object that resembles the commands I had typed up.

    I'm assuming that this is possible, and that F1 uses the same functionality to open help for a command...

    Your insight would be greatly appreciated!

    RCM

  • #11656

    Warren Frame
    Participant

    Hi again,

    So it turns out $psise.CurrentPowerShellTab.ConsolePane (appears to be) the right spot to pull this information, but pressing a shortcut somehow changes the environment so that this object does not include the information I need.

    Does anyone know how to pull this? Here's a basic example of what I am looking for. I open PowerShell ISE (v3+). I type in the shell (not editor) "Get-Help Get-Command -Full". I do not press enter. I press a shortcut key, or click through the Add-Ons menu and pre-written code takes action based on the input "Get-Help Get-Command -Full", and the current position of the caret.

    What am I missing? Do I need to invoke a method of some sort that sets the context back to the console before looking at $psise.CurrentPowerShellTab.ConsolePane? Is this functionality not possible?

    Thanks!

  • #11658

    Dave Wyatt
    Moderator

    I suspect that it's not possible if you're executing PowerShell code, because all code that you execute (even if you press a shortcut key) is run through that same Console pane. The ISE just saves whatever text was on the command line first, and puts it back when your shortcut code is done.

    I'm not sure if it's possible to write extensions to the ISE in the form of a .NET Assembly rather than PowerShell code; extending the ISE isn't something I've researched yet. If it is possible, that might get around this problem.

  • #11661

    Warren Frame
    Participant

    I notice if I type in a command in the console pane and press F1, I see a 'running script / selection...' status. Was hoping that meant the functionality was possible and that MS was using it for the help window

You must be logged in to reply to this topic.