PowerShell 2.0 и «Термин« Param »не распознается как имя командлета, функции, файла сценария или работоспособной программы» - PullRequest
38 голосов
/ 22 августа 2009

Я использую 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

Это известная проблема или я просто неправильно ее использую?

Ответы [ 3 ]

67 голосов
/ 22 августа 2009

Если ваш param($p) не первая строка в вашем скрипте, которая может вызвать ошибку Param.

Убедитесь, что ваша param($p) - первая строка.

33 голосов
/ 22 августа 2009

Я решил проблему. Я исправил описание проблемы, чтобы оно было точным.

Источник проблемы в том, что я неправильно использовал ключевое слово Param несколько раз. Правильное использование - объявить несколько параметров в одном объявлении Param, как показано ниже:

Param($p, $d)

Это использование объясняется в статье справки Windows PowerShell "about_Functions".

2 голосов
/ 11 мая 2011

Запуск этого скрипта,

cls

param([string]$Url, [string]$Template="CMSPUBLISHING#0")

Write-Host "Url: $Url"  

Я получил ту же ошибку

Термин «парам» не признается как имя командлета, функции, скрипта файл или работоспособная программа. Проверить написание имени, или если путь был включите, убедитесь, что путь исправьте и попробуйте снова.

Когда я закомментировал cls вверху, это сработало,

#cls 

param([string]$Url, [string]$Template="CMSPUBLISHING#0")

Write-Host "Url: $Url"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...