Home > Blockchain >  Why Write-Verbose messages don't appear from conditions
Why Write-Verbose messages don't appear from conditions

Time:10-31

I'm trying to receive Verbose messages of every sorting step and run my script with -Verbose key, but I don't receive any verbose message from the conditionals (loops). I receive my messages only if I call them outside the conditionals. Please help

    [CmdletBinding()]
    param()
    set-location "\test folder"
    $listOfItems = Get-ChildItem | Select-Object -Property Name, Mode, LastWriteTime, @{label = "FileSize (MB)";expression = {$_.Length/1024/1024}}
    $bufferItem = 0
    for ($i = $listOfItems.Length - 1; $i -eq 0; $i--) {
        for ($j = 0; $i -lt $i; $j  ) {
            if ($listOfItems[$j]."FileSize (MB)" -gt $listOfItems[$j   1]."FileSize (MB)") {            
                Write-Verbose -Message "Transfer the value of the buffer variable to the element below the list"
                continue
            }
            elseif ($listOfItems[$j]."FileSize (MB)" -lt $listOfItems[$j   1]."FileSize (MB)") {
                $bufferItem = $listOfItems[$j]
                $listOfItems[$j] = $listOfItems[$j   1]
                $listOfItems[$j   1] = $bufferItem
            }
            Write-Verbose -Message "Transfer the value of the buffer variable to the element below the list"
        }
    }

CodePudding user response:

There's a bug in your inner loop condition:

for ($j = 0; $i -lt $i; $j  ) {

Since $i -lt $i will never evaluate to $true, the inner loop body won't ever execute, and no Write-Verbose statement is ever reached.

Fix the loop condition and you'll find Write-Verbose works perfectly fine in conditional statements.

  • Related