[Last Call] Learn how to a build a cloud-first strategyRegister Now

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 285
  • Last Modified:

PS 3 variable scope issue inside FOR loop

In the code snippet below, I cannot set the E3Path while inside the FOR loop, but can set it outside of the loop without any problem. I've tried prefixing "script:" , but it made no difference:
   script:$CSVRecord.E3Path = "Popcorn"

I know, or think, that items allocated in the FOR loop are local, but I thought I would be able to access variables outside of it with no problem.

Please explain and how to solve.
thanks



$CSV = Invoke-Sqlcmd -Query $Query

$deleteflag=0
ForEach ($CSVRecord in $CSV)
{
#find the current record number being processed
 [int]$currentrecord = [array]::IndexOf($CSV,$CSVRecord)

if ($deleteflag=1)
{
            write-host ***********************************************
            Write-Host Current Record# $currentrecord
            #skip the 1st record
 #THIS WORKS AS EXPECTED "Popcorn3" is set in the record
           $CSVRecord.E3Path = "Popcorn3"

            $filecount = $CSVRecord.filecount-1
            for ($i=0; $i -lt $filecount; $i++)
            {
#WHY DOESN'T THIS NEXT LINE DO ANYTING?
            $CSVRecord.E3Path = "Popcorn"
            }
            write-host ***********************************************
$deleteflag=0

pause
$CSVRecord
pause
}
0
johnj_01201
Asked:
johnj_01201
  • 2
1 Solution
 
QlemoC++ DeveloperCommented:
The proper syntax is: $script:CSVRecord.E3Path = "Popcorn", but it should work without. Unless you create a new var with the same name in the FOR, which you don't.

I reckon, since the code you showed doesn't make much sense, that your real code contains something causing that effect.
0
 
johnj_01201Author Commented:
OK thanks. The problem was the IF statement was $deleteflag=1 instead of $deleteflag -eq 1, so the code was never being run and I used the same block of code in another part of the program, so I thought it was actually running here. I moved it here to troubleshoot.
0
 
QlemoC++ DeveloperCommented:
Oh, I haven't spotted that either. Stupid mistake, and so easy to make.
0

Featured Post

A Cyber Security RX to Protect Your Organization

Join us on December 13th for a webinar to learn how medical providers can defend against malware with a cyber security "Rx" that supports a healthy technology adoption plan for every healthcare organization.

  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now