ML
    • Recent
    • Categories
    • Tags
    • Popular
    • Users
    • Groups
    • Register
    • Login

    Understanding $args in PowerShell

    Scheduled Pinned Locked Moved Developer Discussion
    powershell
    92 Posts 7 Posters 73.3k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • C
      chutestrate
      last edited by

      For my current limited understanding arrays are easier to understand than than the $args

      scottalanmillerS 1 Reply Last reply Reply Quote 0
      • scottalanmillerS
        scottalanmiller @chutestrate
        last edited by

        @chutestrate said:

        For my current limited understanding arrays are easier to understand than than the $args

        $args is just an array, nothing more.

        1 Reply Last reply Reply Quote 0
        • scottalanmillerS
          scottalanmiller
          last edited by

          Here is a little array program to do basically the same thing as above but using an array defined inside of the script rather than passing in arguments from the command line...

          $myarray = "John", "Peter", "Linda", "Scott", "Norman", "Jenny"
          
          for ($i=0; $i -lt $myarray.length; $i++) {
             'This is $myarray[' + $i + "], which is: " + $myarray[$i]
          }
          
          1 Reply Last reply Reply Quote 0
          • scottalanmillerS
            scottalanmiller
            last edited by

            When you run it you get this...

            > .\arraydemo.ps1
            This is $myarray[0], which is: John
            This is $myarray[1], which is: Peter
            This is $myarray[2], which is: Linda
            This is $myarray[3], which is: Scott
            This is $myarray[4], which is: Norman
            This is $myarray[5], which is: Jenny
            
            1 Reply Last reply Reply Quote 0
            • C
              chutestrate
              last edited by

              @scottalanmiller said:

              @chutestrate said:

              For my current limited understanding arrays are easier to understand than than the $args

              $args is just an array, nothing more.

              don't follow that one.

              scottalanmillerS 1 Reply Last reply Reply Quote 0
              • scottalanmillerS
                scottalanmiller
                last edited by

                So as you can see, I set the array to have those names in it with this line...

                $myarray = "John", "Peter", "Linda", "Scott", "Norman", "Jenny"
                

                When you use $args, the exact same thing is happening except that PowerShell is doing it automatically and hidden from you because it is happening from the command line and you don't write it out explicitly. But what is happening under the hood in a case where you do this...

                .\myexample John Peter Linda Scott Norman Jenny
                

                What PowerShell is doing without you having to write it is basically this...

                $args = "John", "Peter", "Linda", "Scott", "Norman", "Jenny"
                
                1 Reply Last reply Reply Quote 0
                • scottalanmillerS
                  scottalanmiller @chutestrate
                  last edited by scottalanmiller

                  @chutestrate said:

                  $args is just an array, nothing more.

                  don't follow that one.

                  Not sure what else to say. It's that simple. $args is an array. $myarray is an array. There's nothing more to it. The only thing that makes $args special is that it is the one array that PowerShell makes for you when you run your script.

                  1 Reply Last reply Reply Quote 0
                  • C
                    chutestrate
                    last edited by

                    Not a problem. This has been phenomenal. I've learned a lot. I'll try to use this to understand the args. Unfortunately, I'm looping back to some of my original confusion. I know you addressed it, but it's not making completed sense.

                    1 Reply Last reply Reply Quote 0
                    • scottalanmillerS
                      scottalanmiller
                      last edited by

                      Definitely leave $args for now and focus on arrays. Once you are solid on arrays, $args is pretty much self explanatory. Try doing some sample scripting with arrays for things. That will help a lot. In all seriousness, doing a MadLibs script is a good way to learn.

                      1 Reply Last reply Reply Quote 0
                      • C
                        chutestrate
                        last edited by

                        I'll do that.

                        1 Reply Last reply Reply Quote 0
                        • scottalanmillerS
                          scottalanmiller
                          last edited by

                          I doubt that Martin will agree but I don't find PowerShell to be particularly well suited to learning programming concepts. It's a great language for what it is, but I'm very glad that I learned programming on other languages and then learning PowerShell.

                          M 1 Reply Last reply Reply Quote 0
                          • C
                            chutestrate
                            last edited by

                            I'm not fooling myself. I don't do well with trying to be a programmer. This is part of the testing goals. I just got interested in powershell, and am trying it out. Thank you for all the time. I'm rereading the posts, and I'm going to have a hard time matching $args to arrays. Maybe tomorrow it will click.

                            scottalanmillerS 1 Reply Last reply Reply Quote 0
                            • scottalanmillerS
                              scottalanmiller @chutestrate
                              last edited by

                              @chutestrate said:

                              I'm rereading the posts, and I'm going to have a hard time matching $args to arrays. Maybe tomorrow it will click.

                              Just remember that there is nothing to match. $args is just another array like any other. It's not a different thing. It's not "like" an array, or similar to or anything. It is an array. $args is the name of an array. I have a feeling that you are thinking of $args as a thing rather than the name of an array.

                              1 Reply Last reply Reply Quote 0
                              • C
                                chutestrate
                                last edited by

                                I definitely am. Unfortunately, i don't see it the way you are telling me.

                                scottalanmillerS 1 Reply Last reply Reply Quote 0
                                • M
                                  Martin9700 @scottalanmiller
                                  last edited by

                                  @scottalanmiller said:

                                  I doubt that Martin will agree but I don't find PowerShell to be particularly well suited to learning programming concepts. It's a great language for what it is, but I'm very glad that I learned programming on other languages and then learning PowerShell.

                                  The languages I've mostly worked with are batch/cmd, Visual Basic, vbScript and PowerShell. So PowerShell is a vast improvement over those 🙂

                                  It took me awhile to really grasp the idea of objects and using them for everything in PowerShell, but once I did the whole language opened up to me and I began to realize all the things I could do.

                                  scottalanmillerS 1 Reply Last reply Reply Quote 0
                                  • C
                                    chutestrate
                                    last edited by

                                    Both of you have been immensely helpful. I hope I can return the favor in some way.

                                    1 Reply Last reply Reply Quote 0
                                    • scottalanmillerS
                                      scottalanmiller @Martin9700
                                      last edited by

                                      @Martin9700 said:

                                      @scottalanmiller said:

                                      I doubt that Martin will agree but I don't find PowerShell to be particularly well suited to learning programming concepts. It's a great language for what it is, but I'm very glad that I learned programming on other languages and then learning PowerShell.

                                      The languages I've mostly worked with are batch/cmd, Visual Basic, vbScript and PowerShell. So PowerShell is a vast improvement over those 🙂

                                      It took me awhile to really grasp the idea of objects and using them for everything in PowerShell, but once I did the whole language opened up to me and I began to realize all the things I could do.

                                      I come at it from the other direction. Was doing C and Fortran, then Java and C#. Everything is better than Fortran, though.

                                      1 Reply Last reply Reply Quote 0
                                      • scottalanmillerS
                                        scottalanmiller @chutestrate
                                        last edited by

                                        @chutestrate said:

                                        I definitely am. Unfortunately, i don't see it the way you are telling me.

                                        If I could figure out how you are perceiving it then maybe I could help more. I'm not sure how you are looking at it, though, which makes it hard for me.

                                        1 Reply Last reply Reply Quote 0
                                        • C
                                          chutestrate
                                          last edited by

                                          Trying to sort it out. The automation piece is part of it. If it's created automatically why is the programmer designating what $args[0], [1], [2], etc is.

                                          scottalanmillerS 1 Reply Last reply Reply Quote 0
                                          • scottalanmillerS
                                            scottalanmiller @chutestrate
                                            last edited by

                                            @chutestrate said:

                                            Trying to sort it out. The automation piece is part of it. If it's created automatically why is the programmer designating what $args[0], [1], [2], etc is.

                                            The programmer is not designating what they are. The programmer is reading the contents out. At no point, in any example, did we specify in our program what the values of the elements in the $args array were. We never did that. All we ever did was print out their contents to show what they had been set to by PowerShell.

                                            1 Reply Last reply Reply Quote 0
                                            • 1
                                            • 2
                                            • 3
                                            • 4
                                            • 5
                                            • 2 / 5
                                            • First post
                                              Last post