2009-08-22 16 views
28

私はWindows 7 RTMを実行しています。 Powershell 2.0はデフォルトでインストールされます。私は優れたWindows Powershell ISEを使用してスクリプトを編集しています。私は次のスクリプトを持っています:Powershell 2.0 Paramキーワードエラー

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

私はSayItAgain.ps1としてスクリプトを保存します。私はそうのような対話型のシェルからこのスクリプトを実行しようとすると:

./SayItAgain -p "Hello" 

私は次のエラーを受け取る:

The term 'Param' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling o 
f 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 

これは既知の問題ですか、私は単にそれが間違って使用していますか?

+0

をコメントしたとき、私は同じエラーに

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.

を得ました実際のエラーはスクリプトの別の行にあります。あなたは./SayItAgain.ps1を呼び出していると言いますが、エラーはFindAndCopyFiles.ps1を呼び出していると言います。共有できるコードはもうありますか?エラーが間違った方向に向かうことがあります。エラーは別の場所にある可能性があります。 –

+0

ああ、私は矛盾をお詫び申し上げます。私は問題を追跡する簡単な例としてSayItAgainを作成しました。元のスクリプトのエラーを間違ってコピーしました。これを私の補遺で説明します。 –

答えて

26

私はこの問題を解決しました。私は不完全で矛盾した情報をお詫びします。問題の説明を修正して正確にしました。私はあなたの助けに感謝します。

問題の原因は、誤ってParamキーワードを複数回使用していたことです。正しい使用方法は、次のような単一のParam宣言内で複数のパラメータを宣言することです:

Param($p, $d) 

この使用法は、Windows PowerShellのヘルプ記事「about_Functions」で説明されています。このスクリプトを実行

49

あなたのスクリプトのパラメタ($ p)は最初の行ですか?そうでない場合、Paramエラーが発生する可能性があります。あなたのパラメータ($ p)が最初の行であることを確認してください。

+1

これは問題の可能性が高いですが、コメントのない最初の行で十分です。 –

+0

ジョン・イングルの受け入れられた答えが彼の問題を解決したとはいえ、私はこれが他のプログラマーが直面していた正確な解決策が提供されている「params」に関する問題の可能性が高いと感じています。ありがとう@ダビッド。 –

+0

エラーメッセージだけがこれを説明している場合は! – rob

1

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" 
+5

paramキーワードを使用する前に、空白やコメント以外は何もできません。そのため、エラーが発生しました。 –

関連する問題