I had some fun this week by reading lots and lots of code. Saturday I set out to make myself a gitconsole for Visual studio 2010. I want this because powerconsole is not Async and the nugetconsole has to much nuget bits hanging on to it.

Since nuget is opensource I set out to get the powerconsole out of the nuget source. Alas, after spending a few hours with the code I was thinking that nuget is bit to tightly coupled with is console for me to get it out and change it the way I want it. In other words it might be easier to start from scratch. So I did some more reading and found that embedding powershell in your application is pretty easy.

Here are two excellent articles on how to do it.

  • [How to run PowerShell scripts from C#][1]
  • [Asynchronously Execute PowerShell Scripts from C#][2]
  • [How to Embed PowerShell Within a C# Application][3] And look what I made in a few minutes.

And here is all the code I needed to make that work. It was more work finding where they hid the System.Management.Automation.dll but nothing Google can’t handle.

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim p = InvokeCommand(Me.TextBox1.Text)
        For Each p1 In p
            Me.TextBox2.AppendText(p1)
        Next
    End Sub

    Public Function InvokeCommand(ByVal command As String) As IEnumerable(Of String)
        Try
            Return PowerShell.Create.AddScript(command).AddCommand("out-String").Invoke(Of String)()
        Catch ex As Exception
            Return New List(Of String) From {ex.Message}
        End Try
    End Function

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Me.TextBox2.Text = ""
    End Sub```
Now I just have add this to my toolwindow in my VS extension and I’m done 😉 easy as pie.

 [1]: http://www.codeproject.com/KB/cs/HowToRunPowerShell.aspx
 [2]: http://www.codeproject.com/KB/threads/AsyncPowerShell.aspx
 [3]: http://www.dougfinke.com/blog/index.php/2010/04/08/how-to-embed-powershell-within-a-c-application/