Вы неправильно вызываете свою функцию, Powershell (в отличие от других языков) не требует скобок при вызове функции, см. about_functions для получения дополнительной информации.
Используя их таким образом, вы группируете все, что в скобках, в один элемент, это отправляется первому параметру $number
, оставляя $baud
пустым, что вызывает ваши ошибки.
Правильный синтаксис:
openComPort 1 9600
РЕДАКТИРОВАТЬ: Хорошей практикой является размещение параметров в блоке param()
(это шаг к использованию расширенных функций .
И также установить тип параметра, чтобы убедиться, что вы получаете правильный тип ввода. Они оба int
в этом случае - так как вам нужно только положительное целое число.
Это обновит вашу функцию до:
function openComPort {
Param(
[int]$number,
[int]$baud
)
$port = New-Object System.IO.Ports.SerialPort("COM$number", $baud, 'None', 8, 'One')
$port.Open()
return $port
}
$myOpenedPort = openComPort -number 1 -baud 9600