WPF GUI for PowerShell Scripts

This topic contains 1 reply, has 2 voices, and was last updated by  Don Jones 7 months, 3 weeks ago.

  • Author
    Posts
  • #67857

    Rishabh Verma
    Participant

    How can i run powershell scripts or multiple PS Commands from WPF? I am using this thing but getting some Method invocation Error.

    using System.Collections.ObjectModel;
    using System.Management.Automation;
    using System.Management.Automation.Runspaces;
    

    Creating runspace and calling that script. [I am calling an external script.]
    another thing i tried is :

    using (PowerShell PowerShellInstance = PowerShell.Create())
    

    But from this i can run a single command.

    One working method i found was using script below:

    Add-Type -AssemblyName PresentationFramework
    [xml]$xaml = 
    @"
    
        
            
            
            
    
        
    
    "@
    
    }
    Function Test-InternetConnection {
    [cmdletbinding(
        DefaultParameterSetName = 'Site'
    )]
    param(
        [Parameter(
            Mandatory = $True,
            ParameterSetName = '',
            ValueFromPipeline = $True)]
            [string]$Site,
        [Parameter(
            Mandatory = $True,
            ParameterSetName = '',
            ValueFromPipeline = $False)]
            [Int]$Wait
        )
        #Clear the screen
        Clear
        #Start testing the connection and continue until the connection is good.
        While (!(Test-Connection -computer $site -count 1 -quiet)) {
           # Write-Host -ForegroundColor Red -NoNewline "Connection down..."
            Write-Output "Connection down..."
            Start-Sleep -Seconds $wait
            }
        #Connection is good
        #Write-host -ForegroundColor Green "$(Get-Date): Connection up!"
         Write-Output "$(Get-Date): Connection up!"
    }
    Function Servicereport()
    {
    $obj = Get-Process | Out-GridView
    Start-Sleep 2
    }
    
    Function Processreport()
    {
    Test-InternetConnection -Site google.com -Wait 2
    Start-Sleep 2
    }
    
    $reader=(New-Object System.Xml.XmlNodeReader $xaml)
    $Window=[Windows.Markup.XamlReader]::Load( $reader )
    
    $button1 = $Window.FindName("Services")
    $button2 = $Window.FindName("Process")
    $Method1=$button1.add_click
    $Method2=$button2.add_click
    $Method1.Invoke({Servicereport})
    $Method2.Invoke({Processreport})
    $Window.ShowDialog() | Out-Null
    

    But with this approach i am unable to get Modern UI.

    Please help i am actually confused.

  • #68004

    Don Jones
    Keymaster

    So, this isn't "from WPF." WPF is a presentation framework, not a language.

    What language are you writing in?

You must be logged in to reply to this topic.