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.

      • Cyborganism@lemmy.ca
        link
        fedilink
        English
        arrow-up
        54
        ·
        6 months ago

        That doesn’t make any sense. Why not just use PowerShell directly then? Why use Bash or even command line and a batch file? It sounds to me like you’re over-complicating things for nothing and putting the blame on Microsoft for some reason.

        I’m a heavy Bash user myself and often find myself struggling a bit with PowerShell trying to look for equivalent commands. (commandlets?) But, the more I use it, the more I understand how it works and the more I improve my skills at using it.

        I know a lot of people like to shit on Microsoft, but seriously give their PowerShell a chance. It has its strengths. It’s especially nice with Oh My Posh running in Windows Terminal.

        • purplemonkeymad@programming.dev
          link
          fedilink
          arrow-up
          2
          ·
          6 months ago

          Since you added a question mark, commands is the correct general term. However there are two types that can be a command. Functions: which are written in pure powershell and cmdlets: which are commands provided by dotnet classes. (Also exes and a bunch of other stuff common to other shells can be a command, but that’s not important.)

          The reason they have different names is early on functions didn’t support some of the features available to cmdlets, such as pipeline input. There was later a way to add this support to functions.

          In practice call them any of the 3 and people will know that you mean.

      • I have to run the .ps1 script in a new Command Prompt because the compilation takes a few minutes

        I don’t follow this reasoning. Is it because you don’t want to take over the VSCode terminal with a long command? Couldn’t you can open multiple tabs, or run in the background, or use screen/tmux, etc.?

        • urska@lemmy.caOP
          link
          fedilink
          arrow-up
          7
          arrow-down
          9
          ·
          edit-2
          6 months ago

          Yeah I use my terminal to run other things, as it stays compiling for around 5-6 min. I could open another tab like you mention but Instead I automated all so it only takes 1 alias (ex cc) to compile my shit.

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

          • wizardbeard@lemmy.dbzer0.com
            link
            fedilink
            English
            arrow-up
            26
            ·
            edit-2
            6 months ago

            All of those inputs would likely be much better built into the ps1 file. PowerShell is meant as a sucessor to vbscript which was meant as a successor to windows batch.

            Selecting options? Make them parameters that you just set when calling the script: ./build.ps1 -Arch 64 -CompressSplines

            Needing someone to manually confirm something completed? Add a while loop to wait 5 seconds while whatever spawned process is still running.

            Etc.

            Also, you can have multiple terminals open in VSCode.

            You’ve not listed any requirements that aren’t more easily solved with existing features in the tools you’ve listed. Learn the tools your work expects you to use before you start blaming them for shit.

              • wizardbeard@lemmy.dbzer0.com
                link
                fedilink
                English
                arrow-up
                6
                ·
                edit-2
                6 months ago

                That’s absolutely acceptable. Don’t fix what ain’t broke.

                But please don’t publicly post a joke/rant about how your only option to accomplish something was through absurd hacky workarounds, when the issue is that you refused to learn the tools you have.

                What we have here is the slightly more tech literate version of printing out a Word Doc so you can re-arrange, remove, and add pages physically before scanning it back in as a PDF to email someone, then complaining about it being so difficult, rather than just using one of the many many print to PDF and PDF editing/splicing tools.

  • ArchAengelus@lemmy.dbzer0.com
    link
    fedilink
    arrow-up
    44
    ·
    6 months ago

    Please explain why you don’t open powershell and run cmd.exe instead of running bash? This is a strange workaround and doesn’t really make sense.

      • wizardbeard@lemmy.dbzer0.com
        link
        fedilink
        English
        arrow-up
        15
        ·
        6 months ago

        Why not just open another terminal in VSCode?

        You can open as many as you want, and as many types as you want. Bash, PowerShell, Command Prompt… there’s zero need to chain multiple just to keep your main one free.

  • beeng@discuss.tchncs.de
    link
    fedilink
    arrow-up
    40
    ·
    6 months ago

    Command prompt is CMD and batch script, Powershell is Pwsh and .ps1, then bash is .sh.

    You’ve confused a few things here…

    FYI, open a powershell terminal separately, to the path of your script (powershell in file Explorer path) and run your script.

    Do rest of Work in Vscode

    Done.

    • Toribor@corndog.social
      link
      fedilink
      English
      arrow-up
      2
      ·
      6 months ago

      I use Ansible on WSL to run Powershell scripts on Windows using VSCode. I’m surprised it works as well as it does.

  • Ms. ArmoredThirteen@lemmy.ml
    link
    fedilink
    arrow-up
    22
    ·
    6 months ago

    My work someone made a robust automated build script, and they left so someone else made a wrapper around it to make it easier to work with, they’re gone now and someone wrote a wrapper around that to extend functionality in a backwards compatible way, but it’s overly complicated for my minimal use cases so I wrote a batch file to call it with my default settings…

  • masterspace@lemmy.ca
    link
    fedilink
    English
    arrow-up
    22
    arrow-down
    2
    ·
    6 months ago

    You work a job that uses PowerShell and you refuse to learn or use it. You are creating problems for yourself.

  • tofubl@discuss.tchncs.de
    link
    fedilink
    arrow-up
    13
    arrow-down
    1
    ·
    6 months ago

    WSL has changed the game pretty significantly, don’t you agree? It’s not perfect, but allows me to stay firm in my resolve never to learn powershell.

    • discusseded@programming.dev
      link
      fedilink
      arrow-up
      15
      ·
      6 months ago

      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?

      • Anafabula@discuss.tchncs.de
        link
        fedilink
        arrow-up
        6
        ·
        6 months ago

        Bash sucks. At best, only use it to pipe commands into each other in the terminal (Or change your shell to something else). For scripting, use Python or something.

        Btw, Powershell runs on Linux if you want that

        • discusseded@programming.dev
          link
          fedilink
          arrow-up
          1
          ·
          6 months ago

          I did install it on one of my machines but haven’t dug in yet. I’m curious to see how much of my workflow will translate to Linux, yet at the same time I want to make sure I’m actually learning Linux and not using PS as a crutch.

      • Ephera@lemmy.ml
        link
        fedilink
        arrow-up
        2
        ·
        6 months ago

        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…

        • discusseded@programming.dev
          link
          fedilink
          arrow-up
          1
          ·
          6 months ago

          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.

          • Ephera@lemmy.ml
            link
            fedilink
            arrow-up
            2
            ·
            6 months ago

            To be honest, I’m not the best to ask about Python. I need more rigid languages for my daily job, so it’s much quicker for me to just throw down a small project in one of those.

            I do know, though, that Python comes with Tkinter out of the box. People usually don’t praise that all too much, but it’s probably fine for small GUIs.

            However, it’s almost certainly worse than Powershell/.NET for creating Windows-only GUIs.

            If you’d like to write GUIs on the Linux side, then I would frankly recommend not doing that.
            No Linux sysadmin wants a GUI to deal with. If you give them a CLI, then they can automate that, i.e. integrate it into yet another (probably Bash) script.
            Not to mention that most Linux servers don’t even have a graphics stack installed…

            • discusseded@programming.dev
              link
              fedilink
              arrow-up
              2
              ·
              6 months ago

              I appreciate the feedback. For the Linux side it’s for personal projects and learning opportunities so starting with something familiar and growing from there is my goal.

              I dabble in C and C++ so cli isn’t out of the question for me. But .NET is my comfort zone, and I like the rapid tooling that PS offers.

              I have multiple reasons to dig into Python so really I just need to get on with it.

          • tux7350@lemmy.world
            link
            fedilink
            arrow-up
            1
            ·
            6 months ago

            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?

            • discusseded@programming.dev
              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
      • tofubl@discuss.tchncs.de
        link
        fedilink
        arrow-up
        1
        ·
        edit-2
        6 months ago

        Mh, it probably depends a lot where you’re coming from. I don’t need Powershell or have a reason to learn it in my daily work, and I mostly use WSL to access Linux shells everywhere else. And on top of that, I don’t understand why Powershell needs a completely different command set to basically every other shell. It’s a biased take, but I have not had an interaction with Powershell that I liked, nor have I seen a feature that made me want to look into it more.

        What’s the killer feature, would you say? Care giving me the fanboy-pitch?

        edit. Oh and I forgot, the tab completion in Powershell is so incredibly dumb. I never ever in my life want to cycle through all items in a path, and much less have it be case insensitive. Come to think of it, this might be the origin of most of my disdain. ;)

        • discusseded@programming.dev
          link
          fedilink
          arrow-up
          3
          ·
          6 months ago

          By far it’s the object pipeline. Having structured data makes it easy to automate workflows in a predictable way. With bash everything is a string, so everything has to be parsed. It’s tedious.

          It took about a year of steady use before I came to enjoy the syntax. It shines in a production environment with other cooks in the kitchen. I never got into the C style, I like my code human readable at a glance. It’s fine if everyone’s a sage but we have a team with a mixture of skill levels and for me PowerShell gets it right.

          • tofubl@discuss.tchncs.de
            link
            fedilink
            arrow-up
            2
            ·
            6 months ago

            That actually makes a lot of sense. I never even second guessed how tedious all the parsing is. But then, as others have said here, as soon as the task at hand reaches a level of complexity beyond grepping, piping and so on I just very naturally move to Python.

            On a different note, there are ways to teach bash json. I recall seeing a hacker conference talk on it some time ago, but didn’t pay close attention.

  • beeng@discuss.tchncs.de
    link
    fedilink
    arrow-up
    11
    ·
    edit-2
    6 months ago

    Another question, why can’t you write the compile script in bash?

    ChatGPT would make pretty short work of the conversion.

    • visc@lemmy.world
      link
      fedilink
      English
      arrow-up
      3
      arrow-down
      1
      ·
      edit-2
      6 months ago

      Until you have it write a github action that uses a bash script to process a directory structure with spaces in the names. Never seen ChatGPT so confused before.

      • beeng@discuss.tchncs.de
        link
        fedilink
        arrow-up
        5
        ·
        edit-2
        6 months ago

        Env variable that problem away if it’s from software you don’t control, then fix your shit from where you do.

  • Nougat@fedia.io
    link
    fedilink
    arrow-up
    7
    arrow-down
    1
    ·
    6 months ago

    It sounds like your hate in this instance is misplaced, because “someone” set things up in that stupid way.

  • Hirom@beehaw.org
    link
    fedilink
    arrow-up
    5
    ·
    6 months ago

    This is a common issue in software, not limited to scripting. Software are getting more and more layers of wrappers/adapter code, like a Russian doll. It contributes to dependency hell, as each layer brings new dependencies.

    Developers often find it easier to wrap existing apps and software, and add another layer on top, rather than improving or replacing what exists.

  • Valmond@lemmy.world
    link
    fedilink
    arrow-up
    3
    arrow-down
    4
    ·
    6 months ago

    pOwErShEll

    How many of them are there in windows nowadays, cmd, pOwershell versions, shell if you use git, …