Found while doing forensics on some rediscovered loose flash drives.

  • Snot Flickerman@lemmy.blahaj.zone
    link
    fedilink
    English
    arrow-up
    13
    arrow-down
    7
    ·
    10 months ago

    Text Based OS > Object Based OS

    Everything that is wrong with PowerShell in my opinion is driven by the Object Oriented nature of Windows as an OS.

    Since everything in Linux is text, grep is king.

    • bleistift2@feddit.de
      link
      fedilink
      English
      arrow-up
      23
      arrow-down
      2
      ·
      10 months ago

      Don’t you think immediately getting the property you’re interested in from an object is easier and more readable than first grepping some output to get the line you want and then removing the leading and trailing garbage on that line manually?

      I thing PS scripting would be much more fun if the words weren’t so annoyingly long.

      • Doc Avid Mornington@midwest.social
        link
        fedilink
        English
        arrow-up
        6
        ·
        10 months ago

        first grepping some output to get the line you want and then removing the leading and trailing garbage on that line manually

        That’s not what we do, though. Give me a more concrete example, and I’ll let you know how I would expect to do it in a nix environment. I’d be curious to compare. Since I have zero experience with powershell, I am not really sure what to expect. The couple times I’ve glanced at a powershell script it looked awful, but I could be falling into Paul Graham’s blub paradox there. OK, I don’t think so, but maybe.

        • bleistift2@feddit.de
          link
          fedilink
          English
          arrow-up
          1
          ·
          10 months ago

          For instance: Get the temperature of the “Composite” sensor from this output:

          $ sensors
          k10temp-pci-00c3
          Adapter: PCI adapter
          Tctl:         +37.1°C  
          
          BAT1-acpi-0
          Adapter: ACPI interface
          in0:          16.07 V  
          curr1:         1.80 A  
          
          amdgpu-pci-0500
          Adapter: PCI adapter
          vddgfx:        1.46 V  
          vddnb:       918.00 mV 
          edge:         +35.0°C  
          slowPPT:     1000.00 uW 
          
          nvme-pci-0200
          Adapter: PCI adapter
          Composite:    +28.9°C  (low  =  -5.2°C, high = +79.8°C)
                                 (crit = +84.8°C)
          
          acpitz-acpi-0
          Adapter: ACPI interface
          temp1:        +37.0°C  (crit = +120.0°C)
          

          Without a cryptic awk incantation that only wizards can understand, that would be:

          sensors | grep Composite | grep -Po 'Composite:.*?C' | grep -Eo '[[:digit:]]{1,2}\.[[:digit:]]'

          • Doc Avid Mornington@midwest.social
            link
            fedilink
            English
            arrow-up
            3
            arrow-down
            1
            ·
            10 months ago

            I think I misunderstood you, when you said “manually”, to mean as a human intervention in the process. What you’re showing here is an extra processing step, but I wouldn’t call that manual. Just want to clear that up, but I’m still down to play.

            Instead of three greps, you could use one sed or awk. I don’t think there’s anything particularly wizardly about awk, and it would be a lot less cryptic, to me, than this chain of greps.

            But a much better idea would be to use sensors -j to get json output, intended for machine reading, and pass that to jq. Since I don’t have the same sensors output as you, I’m not sure exactly what that would be, but I am guessing probably something like:

            sensors -j | jq '."nvme-pci-0200".Composite.composite_input'
            

            I look forward to seeing how you would do this in PS. As I said previously, I don’t know it at all, so I’m not sure what you’re comparing this to.

            • bleistift2@feddit.de
              link
              fedilink
              English
              arrow-up
              4
              arrow-down
              1
              ·
              edit-2
              10 months ago

              What you’re showing here is an extra processing step, but I wouldn’t call that manual.

              Yes, it’s not manual by the dictionary definition, but it is an extra step. This is another meaning of manual in my particular bubble [Edit: that I didn’t think to specify].

              But a much better idea would be to use sensors -j to get json output, intended for machine reading, and pass that to jq.

              This is my initial point, exactly. Dealing with objects is way easier than using the ‘default’ line-wise processing. Only Powershell made that the default, while in Linux you need to hope that utilities have an option to toggle it on – and then also have jq installed to process the objects.

              I look forward to seeing how you would do this in PS. As I said previously, I don’t know it at all, so I’m not sure what you’re comparing this to.

              [Edit, since I forgot to answer your main point:] I don’t program in PS. I don’t like the verbosity. But I do think MS has a point in pushing objects as the prime unit in processing instead of lines.

    • skilltheamps@feddit.de
      link
      fedilink
      arrow-up
      7
      ·
      10 months ago

      Also lots of command line tools have a flag to output json, and then you can do everything powershell can