Since people are curious Ill explain why:

I need to build our project from the remote repo using a PowerShell script (.ps1). I’m using Bash in the VSCode terminal, I have to run the .ps1 script in a new Command Prompt because the compilation takes around 5 minutes and I need my terminal for other things. To do this, the only way is to run a batch file that executes the .ps1 script.

Its an automation so I dont need to touch powershell whatsover and remain in bash terminal. Instead of opening several windows, I automated all so it only takes 1 alias to compile my shit.

The compilation also requires several inputs and “Key Presses”, so I automated all of that in the Batch file.

  • discusseded
    link
    fedilink
    arrow-up
    2
    ·
    edit-2
    6 months ago

    This blog does a fairly straight-forward job on explaining the basics. For me, I learn best in an interactive 1:1 or well-constructed video, so ChatGPT was priceless. I could ask it stupid questions all day long, and after throwing some different ideas around I started to see the essential parts and just let my prior knowledge of PS, .NET, and C# WPF take it from there.

    At the end of the day, all that really matters is using the PresentationFramework assembly and creating a window:

    • Add-Type -AssemblyName PresentationFramework
    • Either use Visual Studio > WPF Project and make the UI you want. Take the XAML file and use PowerShell to get the raw content:
      • $Xaml = Get-Content -Path MainWindow.xaml -Raw
      • $SanitizedXaml = $Xaml -replace “bad syntax e.g. Foreground={x:Null}” "Foreground=“Transparent” # Certain XAML syntax is incompatible with PS XML
      • [xml]$XmlReader = [System.Xml.XmlNodeReader]::new($SanitizedXaml)
      • $Window = [Windows.Markup.XamlReader]::Load($XmlReader)
    • Or, use .NET-style syntax in PS directly:
    • Then show the window:
      • $Window.ShowDialog() | Out-Null