PowerShell 2.0 и "Термин" Param "не распознается как имя командлета, функции, файла сценария или работоспособной программы"
Я использую Windows 7 RTM. PowerShell 2.0 установлен по умолчанию. Я использую отличную Windows PowerShell ISE для редактирования своих скриптов. У меня есть следующий скрипт:
Param($p)
Param($d)
echo $p $d
Я сохраняю скрипт как SayItAgain.ps1. Когда я пытаюсь запустить этот скрипт из интерактивной оболочки, вот так:
./SayItAgain -p "Hello"
Я получаю следующую ошибку:
Термин "Param" не распознается как имя командлета, функции, файла сценария или работоспособной программы. Проверьте правильность написания имени или, если путь был указан, проверьте правильность пути и повторите попытку.
At C:\users\cius\Code\powershell\SayItAgain.ps1:2 char:6
+ Param <<<< ($destination)
+ CategoryInfo : ObjectNotFound: (Param:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
Это известная проблема или я просто неправильно ее использую?
Ответы
Ответ 1
Я решил проблему. Я исправил описание проблемы, чтобы сделать ее точной.
Источник проблемы в том, что я неправильно использовал ключевое слово Param несколько раз. Правильное использование - объявить несколько параметров в одном объявлении Param, как показано ниже:
Param($p, $d)
Это использование объясняется в статье справки Windows PowerShell "about_Functions".
Ответ 2
Если ваш param($p)
не первая строка в вашем скрипте, это может вызвать ошибку Param.
Убедитесь, что ваш param($p)
- первая строка.
Ответ 3
Запуск этого script,
cls
param([string]$Url, [string]$Template="CMSPUBLISHING#0")
Write-Host "Url: $Url"
Я получил ту же ошибку
Термин "param" не распознается как имя командлета, функция, scriptфайл или операционную программу. Проверить написание имени, или если путь был включите, убедитесь, что путь исправить и повторить попытку.
Когда я прокомментировал cls
вверху, он работал,
#cls
param([string]$Url, [string]$Template="CMSPUBLISHING#0")
Write-Host "Url: $Url"
Ответ 4
Также имелась такая "проблема", но я не смог запустить ни один из моих сценариев ps1.
Решение. Измените кодировку с UTF-8 (или имеющейся у вас) на ANSI.
Возможно, это кому-то тоже поможет.