How to use PowerShell foreach

Sdílet
Vložit
  • čas přidán 20. 08. 2024
  • This video introduces you to using the PowerShell statement foreach for looping through a collection of objects. Not to be confused with Foreach-Object which is covered in a different video, even though the two are very, very similar.
    Video on using ForEach-Object
    • PowerShell ForEach-Object
    Vidoe on using PowerShell Aliases
    • PowerShell Arrays Intr...
    You can download the PowerShell and CSV file in a zip file from here. sellfy.com/p/1...
    For support, training, or more information about PowerShell check out www.boldzebras.com

Komentáře • 58

  • @b3nisrael
    @b3nisrael Před 6 lety +19

    No article on the whole Internet has explained the ForEach as good as this video Shane, please please keep them coming.

    • @ShanesCows
      @ShanesCows  Před 6 lety +1

      I am blushing. :)

    • @MuazAlnajjar
      @MuazAlnajjar Před 5 lety

      thank you Simpleton you saved me the time writing the same statement.
      thank you Shane!!

  • @charlesandrews6643
    @charlesandrews6643 Před 2 lety +1

    I learnt my first foreach script. Thank you

  • @michaelbartnicki9464
    @michaelbartnicki9464 Před 4 lety +1

    what really helped me was how you really took the time to explain how $object variable worked. The way i understood it was basically when you start a foreach statement that tells powershell that whatever the first variable in the parentheses is, is basically the variable to be able to cycle through all the objects in the previously declared variable such as $ourobjectsarray

  • @gerardguinee6450
    @gerardguinee6450 Před 4 lety +1

    You saved my day, listening into first 4 minutes i saw where I made a mistake in my own baked ps1 script. Thanks.

  • @talosvalcoran4714
    @talosvalcoran4714 Před 4 lety +2

    Super awesome explanation. Since I have found your videos I have made way and way more progress than from the book alone that I bought. I'll try to put as much of what I learn into actual practice.

  • @eivenhoe
    @eivenhoe Před 3 lety +1

    Always informative, compact and good stuff, thanks Shane for sharing your knowledge

  • @codyf1
    @codyf1 Před 3 lety +1

    I reversed engineered the foreach command
    start of command
    $b="6","3","99"
    $n=0
    while($n -le $b.count){ $h=$b[$n];$n+=1
    #do whatever you want below here but anything to do with $n. Basically don't mess with $n.
    echo $h
    } #end of foreach loop
    #everything below here is necessary to make sure that there are no unnecessary variables left.
    $n=$null
    $h=$null
    End of command
    Output:
    6
    3
    99
    the foreach equivalent of this:
    $b="6","3","99"
    foreach($h in $b){
    echo $h
    }
    I know it takes a whole lot less using the foreach command in this example, but mine has a whole lot more customization. For example you couldn't have possibly gotten this output from a foreach command easily.
    6
    99
    With mine though, you can do this easily. Just change the $n+=1 to $n+=2 and done.

  • @73Jes
    @73Jes Před 3 lety +1

    Have to say that has finally got for each working in my brain, the whole $object $dog thing really worked, that was the bit I could never figure out

  • @tendyfish
    @tendyfish Před 5 lety +2

    thank you for a well explained video. that $object/$dog variable had me pulling my hair off everytime!!

  • @ZoomZip
    @ZoomZip Před 4 lety +1

    One thing I find myself doing is saying in sync with you "And hereeeeeee's our intro'

    • @ShanesCows
      @ShanesCows  Před 4 lety

      😍 all these years later I still say it. 🥰

  • @550891
    @550891 Před 3 lety +1

    very helpful as always. thank you.

  • @TiteufMela
    @TiteufMela Před rokem

    Amazing videos as usual!
    Do you have any powershell series related to directories, files and file servers, permissions...?

  • @lightalwayz
    @lightalwayz Před 3 lety +1

    This is a great series on powershell. Thank you Shane. Do you have training on Active Directory - RBAC?

    • @ShanesCows
      @ShanesCows  Před 3 lety

      Thanks. I don’t do rbac. Sorry b

  • @basetau3200
    @basetau3200 Před 5 lety +1

    Awesome video

  • @PabloVillaronga
    @PabloVillaronga Před 4 lety +1

    Great Video share, i learn a lot , the easy way ! Wouldn;t be great if you post the link to the powershell you explained to Github or your site,like a blog ? Would be easy to execute and get out exercises !

  • @antoniopinho4673
    @antoniopinho4673 Před 6 lety +1

    Great Job!!

  • @sufferinglamb
    @sufferinglamb Před 5 lety +1

    Thanks Shane, great video. Do you have any tutorials that show us how to add a new property/value into an object during a ForEach?

    • @ShanesCows
      @ShanesCows  Před 5 lety

      I don’t. Sorry

    • @michaelcook7389
      @michaelcook7389 Před 5 lety +2

      I'm assuming you've probably figured out how to do that by now.
      Your question carries too many assumptions.
      But, seems like a good one. I've got an answer for you.
      Let's say you want to add a property during a loop. Is it a property that you need to create or index during a loop? If so, that's pretty easy.
      You have to create an index array first.
      $Item = @( 0..number of entries you want to have )
      Then you have to iterate through those indexes to add everything.
      Foreach ( $i in 0..( $item.count - 1 ) ) # this sets up a numerical anchor/index to reference within the loop
      { $item[$_] = @{ Property1 = "Value1" ; Property2 = "Value2" ; Property3 = "Value3" } }
      This string here will SET those properties, and to reference each one later, you would use "$Item.Property1[0]" , you could also reference it by "$Item[0].Property1", whichever way you prefer.
      If you want to ADD to an existing hashtable, then $Item.Add("AddProperty","AddValue")
      There are other ways to do that but that seems to be the easiest, at least in my opinion.
      I could elaborate more? But this comment is getting a little long winded. Hope this helps.

  • @timepassguys432
    @timepassguys432 Před rokem

    Hi, thanks. This helped me a lot.
    I have an question, i have an similar scenario, i have an method which will invoke an restapi. In the main function i have added the foreach loop with a CSV file while includes two values (.id1 and .id2) which should be passed into rest API request.
    I'm getting 502 bad gateway error while doing that.
    The same API works fine on postman with collection runner

  • @IsaiasPerez2023
    @IsaiasPerez2023 Před 5 lety +1

    What Im confused about is the .ojectpropertyname. For some reason that doesnt work for me? is that a property that can go at the end of any alias or does that need to be defined somewhere?

    • @NMXLY
      @NMXLY Před 4 lety

      The ".ojectpropertyname" that is after the "$Object" is what your top Columnes are called in your .csv file.(They must be the exact same.)
      If you type your $object and then add a "." it should give you a list of things you can choose, here you want that to be what you called the Columnes you need the objects from

  • @academyministorage6397

    Why did you separate the brackets to individual lines between Line 22 and 24?

  • @dagma3437
    @dagma3437 Před 4 lety +1

    Hi Shane. First time using Powershell and I need your advice. I have multiple files in a directory I want to create a script that reads in the directory path and for each file in the directory, I want to check if the content of the files have a non ascii character. If there is a non ascii character I want to then write the file name to a output file. I found this scrpt in stackoverflow
    $nonASCII = "[^\x00-\x7F]"
    foreach ($_ in [System.IO.File]::ReadLines($source)){
    if ($_ -cmatch $nonASCII){
    write-output $_ | out-File $output -append
    }
    }
    Issue I have is how to I pass the directory and the files to $source?

  • @WaterJugFitness
    @WaterJugFitness Před 6 lety +2

    First comment and like! BOOM!

  • @SourabhShah20
    @SourabhShah20 Před 3 lety +1

    Hi, want help for an CSV file in which a column contains numbers, need to add a add a comment as "compliant" for the numbers between n to n-3, number below n-4 will be tagged "non-compliant".
    Suppose if today's latest version is 2111 then the lines with 2111, 2110, 2109, 2108 are compliant & the number below 2107 are non compliant.
    Please help.

  • @sushmamandala5381
    @sushmamandala5381 Před 4 lety +1

    when i did any changes in .ps1 file, those changes not working in first time. if I run again
    then working. please solve my issue. i want first time work how?

  • @pranavsalunkhe3501
    @pranavsalunkhe3501 Před 6 lety +1

    Hi
    Can you please make some video on working with power shell on Windows 10, and terminate process with domain administrator Rights, when the UAC is enabled through GP.

    • @ShanesCows
      @ShanesCows  Před 6 lety

      Can you give me a more detailed explanation of what you are trying to do or maybe share some sample code you are struggling with? I will try to help.

    • @pranavsalunkhe3501
      @pranavsalunkhe3501 Před 6 lety

      Shane Young
      I'm trying to kill the process on Windows 10 machine like winwork.exe. from wmi.
      Get-wmiobject - computer name $computername -class win32_process -filter "Name='winword.exe'" | foreach-object {$_.Terminate()}
      But it's giving the return value is 2, means Access Denied.
      Then I've use the -credential and the administrator account details in user name and password, but no luck.
      Please help me.
      One small observation from me that if the script running credentials and the process running credentials are same then it's kill that process.

    • @ShanesCows
      @ShanesCows  Před 6 lety

      Are you running PowerShell as Administrator? Where you have to right click on the PowerShell icon and select "run as administrator".

    • @pranavsalunkhe3501
      @pranavsalunkhe3501 Před 6 lety

      We are running that script from Windows 7 machine which is logged in with domain administrator account.

  • @dhamsselvaraj6529
    @dhamsselvaraj6529 Před 3 lety +1

    Hi
    Can you help me to solve my below problem using powershell
    Am having 2 csv file ..eg actual ad expected ...
    Actual
    Name actualver
    Chrome 12.4533.
    Fire eye 3.4
    Expected
    Name expver
    Chrome 12.4566
    Fire eye 3.4
    My expected result is
    Name expver status actualver
    Chrome 12.4566 differ 12.4533
    Fire eye 3.4 nodiffer 3.4

  • @michaelvidal8335
    @michaelvidal8335 Před 4 lety +1

    So you selected $Dog instead of $Cat. I hope you're happy with that..... ps: from a cat