this post was submitted on 07 Jun 2024
432 points (90.6% liked)

Programmer Humor

31828 readers
1333 users here now

Post funny things about programming here! (Or just rant about your favourite programming language.)

Rules:

founded 5 years ago
MODERATORS
 

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.

you are viewing a single comment's thread
view the rest of the comments
[–] [email protected] 15 points 2 months ago (15 children)

After learning PowerShell and then moving to Linux and having to learn bash...I don't get this sentiment. PS is the shit. I can make full GUI applications and automate all kinds of workflows. Their use of objects makes it so easy to extract data and utilize it. Bash feels so much more primitive and clumsy by comparison. What am I missing here?

[–] [email protected] 2 points 2 months ago (5 children)

People use Bash for quick and dirty scripts, because it's pretty much just a few symbols in between all the commands that they know and use all the time anyways. You don't really 'learn' Bash in a dedicated manner, you rather just pick up on tricks and tidbits over years.

For more than that, you'd use Python, Ruby or a full-fledged programming language.
Personally, I would even go so far that Powershell hardly added something new that wasn't already covered by a programming language...

[–] [email protected] 1 points 2 months ago (4 children)

Python is always something I intend to learn but never get around to. Does it natively handle GUI for process tooling or does it require a third party? What makes PowerShell so useful to me is the native ability to create visual applications without the need to compile. I can create tools for my company that launches right out of ConfigMgr Software Center and other technicians can contribute without needing a programming background.

At home I want to mess around with tooling for home services without having to resort to web development.

[–] tux7350 1 points 2 months ago (1 children)

I can create tools for my company that launches right out of ConfigMgr Software Center and other technicians can contribute without needing a programming background.

Now this is a bit of magic I would like to learn. I read through PowerShell in a month of lunches a couple of years ago and it's saved my butt a couple of times. I'm due for a re-read though. Would you have a source on where I could go to learn more about creating GUI applications in PowerShell?

[–] [email protected] 2 points 2 months ago* (last edited 2 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
load more comments (2 replies)
load more comments (2 replies)
load more comments (11 replies)