То, как вы вызываете функцию, неверно.В PowerShell аргументы для команд (или вызовов функций) разделяются пробелами, а не запятыми.Запятая заставит PowerShell интерпретировать оба значения как массив.
Сделайте это вместо:
getElementFromMap ([X]::X1) ([Y]::Y1)
Скобки есть, поэтому PowerShell оценивает выражения и не обрабатывает их как строки.
Следующее также будет возможно, поскольку значения будут интерпретироваться как строки и автоматически преобразовываться в функцию, поскольку вы указали типы параметров в определении функции ([X]$x, [Y]$y
):
getElementFromMap X1 Y1
# or
getElementFromMap "X1" "Y1"
Смотрите здесь , чтобы узнать больше о двух режимах синтаксического анализа PowerShell (режим выражения и режим аргумента).