Run the script in ISE.
Open a new editor.
Tpye dir and press F7:
function Eval-Selection { # Bernd Kriszio 2010-11-21 # http://pauerschell.blogspot.com/ # twitter @bernd_k $editor = $psise.CurrentFile.Editor if ($editor.SelectedText) { $inputScript = $editor.SelectedText $editor.InsertText('') $editor.InsertText($inputScript) $result = Invoke-expression $inputScript | out-String $editor.insertText("`r`n") $editor.InsertText($result) } else { $inputScript = $editor.Text $EndLine = $editor.LineCount $EndColumn = $editor.GetLineLength($EndLine) + 1 $editor.SetCaretPosition($EndLine, $EndColumn) $result = Invoke-expression $inputScript | out-String $editor.insertText("`r`n") $editor.InsertText($result) } } $psISE.CurrentPowerShellTab.AddOnsMenu.Submenus.Add("Eval-Selection", {Eval-Selection} , 'f7')
Edited
After playing a while, I modified the rules for the case, when nothing is selected. Now I use just the single line, the caret is in. Further I added the -width 1000 parameter to make it realy an improvement about usual output-pane results.
And I have a lot of crazy ideas, what to do if the caret is in an empty line. I don't implement them. Next month I wouldn't remember them myself.
Keep things simple
Bernd
This is the version, I added to my profile:
function Eval-Selection { # Bernd Kriszio 2010-11-21 # http://pauerschell.blogspot.com/ # twitter @bernd_k $editor = $psise.CurrentFile.Editor # if nothing is selected just use the line the caret is in if (!$editor.SelectedText) { $caretLine = $editor.CaretLine $caretLineEnd = $editor.GetLineLength($caretLine) + 1 $editor.Select($caretLine, 1, $caretLine, $caretLineEnd) } # if something is selected use it. if ($editor.SelectedText) { $inputScript = $editor.SelectedText $editor.InsertText('') $editor.InsertText($inputScript) $result = Invoke-expression $inputScript | out-String -width 1000 if ($editor.CaretColumn -ne 1) { $editor.insertText("`r`n") } $editor.InsertText($result) } }