Powershell - Get Item Sequence # ForEach-Object for Error Handling

I want to pass sequence counts for Try/Catch error handling purposes. If my code catches an error, I'd like to be able to return something like "File 2 of 4 failed" without incriminating a sequence variable. I have the following so far:

($hash = @(Get-ChildItem C:\Dir -Recurse -Include *.txt) | Where {$_.length -gt 0}) | ForEach-Object { Write-Host $_.BaseName Write-Host $hash.IndexOf($_)
}
"Array Count = $($hash.Count)"

This will output:

File1
0
File2
1
Array Count = 2

I'm not sure how to get the Index number outside the loop.

1 Answer

Answer: Use a global variable.

Add inside the ForEach-Object a statement such as:

$x = $hash.IndexOf($_);

When the loop stops, the variable $x will contain the index number.

1

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

You Might Also Like