PDA

View Full Version : Strange PowerShell behavior with arguments


mevans
06-23-2015, 01:04 PM
When I pass command-line arguments to PowerShell, I can see them if I do this:

foreach ($i in $args)
{Write-Host $i}

And $args.count returns the correct number.

However, whenever I try to access a specific arg, I always get an empty value. For example:
Write-Host $args[0]
Write-Host $args[1]

This always generates nothing. Even looking at various posts online, I can see maybe I needed to do it like this:

Write-Host $($args[0])
Write-Host $($args[1])

But that still returns nothing.

I finally found one notation that works:

param(
$a,
$b
)

Write-Host $a
Write-Host $b

What I don't understand is why I can't access the values from $args[0], even though I can iterate through the array and get the values?

kinook
06-23-2015, 06:31 PM
[ and ] are special characters in Visual Build step properties--you need to double them to escape (i.e., $args[[0]]).
http://www.kinook.com/VisBuildPro/Manual/powershelltab.htm

mevans
06-24-2015, 04:18 PM
Ahhh...thank you. I doubled them elsewhere in the script and totally missed this.