Обычно выполняется литье, назначьте тип справа:
$num = [int] $args[$i]
Может быть, это ваша проблема?
Второе наблюдение:
Как заметил @JPBlanc, вы передаете массив своей функции, а не три параметра. Использование:
Add 1 2 3
и вы получите это. Во всяком случае, вам не нужно кастинг в этой ситуации. Может быть в этом:
Add "1" "2" "3"
Очевидно, что вы можете продолжать вызывать свою функцию как Add 1,2,3
, но вам нужно изменить ее следующим образом:
Function Add {
args[0] | % {$sum=0}{$sum+=$_}{write-output "Sum is $sum"}
}