Подтвердить что ты не робот

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

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

4b9b3361

Ответ 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. Возможно, это кому-то тоже поможет.