Took some playing around but I think this will work for you.

$array = "dog","cat","bird"

Foreach ($animal in $array) {
                $animal
                [array]::IndexOf($array,$animals)
}

From: [email protected] [mailto:[email protected]] On 
Behalf Of Aakash Shah
Sent: Thursday, August 15, 2013 9:57 PM
To: [email protected]
Subject: RE: [powershell] Current Position In ForEach Loop

Yes, that could work too.  But that still requires that I initialize $idx and 
increment it.  What I was trying to find out is if there was a built in 
mechanism where I could call something like "$ForEach.CurrentPosition" to help 
identify what iteration loop I was on without needing to initialize and 
increment an index variable.

Thanks,

-Aakash Shah

From: [email protected]<mailto:[email protected]> 
[mailto:[email protected]]<mailto:[mailto:[email protected]]>
 On Behalf Of Magnus Tveten
Sent: Thursday, August 15, 2013 5:41 PM
To: [email protected]<mailto:[email protected]>
Subject: RE: [powershell] Current Position In ForEach Loop

Note: This e-mail is subject to the disclaimer contained at the bottom of this 
message.
________________________________

Hmmm isn't that when you use the 'For' not 'foreach'

$arrAnimals = @("dog", "cat", "horse", "snake")

for (0; $idx -le $arrAnimals.length ;$idx++)
{
    Write-Host ("Loop count: " + $idx)
    Write-Host $arrAnimals[$idx]
}



From: [email protected]<mailto:[email protected]> 
[mailto:[email protected]] On Behalf Of Aakash Shah
Sent: Thursday, 15 August 2013 1:19 PM
To: [email protected]<mailto:[email protected]>
Subject: RE: [powershell] Current Position In ForEach Loop

Thanks for responding.

I am able to access the array value at a specific index.  So in the example 
below, I am able to successfully access the letter "c" if I use 
"$arrLetters[2]".

However, what I would like to do is be able to identify what iteration loop 
number the script is currently processing from within the foreach loop using a 
built in method without needing to manually create and increment a counter 
variable.

One example of where I would like to use this is:

$arrAnimals = @("dog", "cat", "horse", "snake")

foreach ($strAnimal in $arrAnimals)
{
     Write-Host ("Loop count: " + <ForEachLoopCounter>)
     Write-Host $strAnimal
}

Is there a built in method to determine what the <ForEachLoopCounter> is 
without needing to create a counter variable and increment it manually on each 
iteration?

Thanks,

-Aakash Shah

From: [email protected]<mailto:[email protected]> 
[mailto:[email protected]] On Behalf Of CESAR.ABREG0 .
Sent: Wednesday, August 14, 2013 7:35 PM
To: [email protected]<mailto:[email protected]>
Subject: Re: [powershell] Current Position In ForEach Loop


I'm most likely wrong but wouldnt this give you C on index 0.
$strLetter [2]

@ the beach now ;) but will check it when I get home. PowerGUI gives you this 
info easy when debuging
On Aug 14, 2013 7:07 PM, "Aakash Shah" 
<[email protected]<mailto:[email protected]>> wrote:
Is there an elegant way to get the current position in a ForEach loop without 
needing to initiate a variable and then increment it on each iteration?

For example, if I have the code below:

$arrLetters = @("a", "b", "c", "d")

foreach ($strLetter in $arrLetters)
{
     Write-Host $strLetter
}

In this example, if the loop reaches "c", is there some built in method to 
discover that the current iteration loop is # 2 (or #3 if the index starts at 1 
instead of 0).

It's not necessarily a problem to initiate a "counter" variable, but I was just 
curious to know if there is a cleaner way.

I am using PowerShell 3 in case that helps.

Thanks!

-Aakash Shah


================================================
Did you know you can also post and find answers on PowerShell in the forums?
http://www.myitforum.com/forums/default.asp?catApp=1

================================================
Did you know you can also post and find answers on PowerShell in the forums?
http://www.myitforum.com/forums/default.asp?catApp=1

================================================
Did you know you can also post and find answers on PowerShell in the forums?
http://www.myitforum.com/forums/default.asp?catApp=1
________________________________
The information transmitted in this message and its attachments (if any) is 
intended only for the person or entity to which it is addressed.
The message may contain confidential and/or privileged material. Any review, 
retransmission, dissemination or other use of, or taking of any action in 
reliance upon this information, by persons or entities other than the intended 
recipient is prohibited.

If you have received this in error, please contact the sender and delete this 
e-mail and associated material from any computer.

The intended recipient of this e-mail may only use, reproduce, disclose or 
distribute the information contained in this e-mail and any attached files, 
with the permission of the sender.

This message has been scanned for viruses.

________________________________


================================================
Did you know you can also post and find answers on PowerShell in the forums?
http://www.myitforum.com/forums/default.asp?catApp=1

================================================
Did you know you can also post and find answers on PowerShell in the forums?
http://www.myitforum.com/forums/default.asp?catApp=1

The information transmitted is intended only for the person or entity to which 
it is addressed
and may contain CONFIDENTIAL material.  If you receive this 
material/information in error,
please contact the sender and delete or destroy the material/information.

================================================
Did you know you can also post and find answers on PowerShell in the forums?
http://www.myitforum.com/forums/default.asp?catApp=1

Reply via email to