Search code examples
arrayspowershellpowershell-ise

Powershell Array is printing the item index along with values


I am returning the array in Powershell. But in response, I am getting array values along with the indexes of the respective values.

How I can stop the item index from printing in the console.

Code Example:

$data = [System.Collections.ArrayList]@()
$Item1 = "vimal" +"::"+ "error1"      
$data.add($Item1)
$Item1 = "vimal" +"::"+ "error2"      
$data.add($Item1)

return $data

Response:

0 1 vimal::error1 vimal::error2

I don't want to print 0 and 1 in the console.

Thanks, Vimal


Solution

  • ArrayList.Add returns index of an newly-added object. Those returns (all un-catched returns) are joined together

    $data = [System.Collections.ArrayList]@()
    $Item1 = "vimal" +"::"+ "error1"      
    $data.add($Item1)   # <<== This outputs "0" because Add() returns index (0) of added object
    $Item1 = "vimal" +"::"+ "error2"      
    $data.add($Item1)   # <<== This outputs "1"
    
    return $data  # <<== This outputs "..error1" and "..error2"
    

    To suppress unwanted returns, use [void]$data.add(...) or $data.add(...) | Out-Null or assign value to some var: $indexOfItem1 = $data.add(...)