PowerShell 2.0 and "The term 'Param' is not recognized as the name of a cmdlet, function, script file, or operable program"

Powershell

Powershell Problem Overview


I am running Windows 7 RTM. PowerShell 2.0 is installed by default. I am using the excellent Windows PowerShell ISE to edit my scripts. I have the following script:

Param($p)
Param($d)
echo $p $d

I save the script as SayItAgain.ps1. When I try to run this script from the interactive shell like so:

./SayItAgain -p "Hello"

I receive the following error:

> The term 'Param' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.

At C:\users\cius\Code\powershell\SayItAgain.ps1:2 char:6
+ Param <<<< ($destination)
    + CategoryInfo          : ObjectNotFound: (Param:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

Is this a known issue or am I simply using it wrong?

Powershell Solutions


Solution 1 - Powershell

If your param($p) is not the first line in your script that can cause the Param error.

Make sure your param($p) is the first line.

Solution 2 - Powershell

I've solved the problem. I've corrected the description of the problem to make it accurate.

The source of the problem is that I was incorrectly using the Param keyword multiple times. The correct usage is to declare multiple parameters within a single Param declaration like the following:

Param($p, $d)

This usage is explained in the Windows PowerShell Help article "about_Functions".

Solution 3 - Powershell

Running this script,

cls

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

Write-Host "Url: $Url"  

I got the same error

> The term 'param' is not recognized as > the name of a cmdlet, function, script > file, or operable program. Check the > spelling of the name, or if a path was > included, verify that the path is > correct and try again.

When I commented out the cls at the top it worked,

#cls 

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

Write-Host "Url: $Url"

Solution 4 - Powershell

Also had this "kind" of problem, but I couldn`t run any of my ps1 scripts. Solution: Change encoding from UTF-8 (or which you have) to ANSI. Perhaps it will help someone too.

Solution 5 - Powershell

I had this issue when trying to use a powershell inline script in an azure dev-ops pipeline, turns out this is an issue so will be using a script from a file instead

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionJohn IngleView Question on Stackoverflow
Solution 1 - PowershellDavid R. LongneckerView Answer on Stackoverflow
Solution 2 - PowershellJohn IngleView Answer on Stackoverflow
Solution 3 - PowershellPaul RowlandView Answer on Stackoverflow
Solution 4 - PowershellVladyslav HrehulView Answer on Stackoverflow
Solution 5 - Powershellmartinseal1987View Answer on Stackoverflow