2009-08-22 14 views
28

मैं विंडोज 7 आरटीएम चला रहा हूं। पावरहेल 2.0 डिफ़ॉल्ट रूप से स्थापित है। मैं अपनी स्क्रिप्ट संपादित करने के लिए उत्कृष्ट विंडोज पावरहेल आईएसई का उपयोग कर रहा हूं। मेरे पास निम्न स्क्रिप्ट है:पावरहेल 2.0 पैराम कीवर्ड त्रुटि

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

मैं अगर सोच रहा हूँ वास्तविक त्रुटि स्क्रिप्ट की एक अलग पंक्ति पर है। आप कहते हैं कि आप कॉल कर रहे हैं ./SayItAgain.ps1 लेकिन त्रुटि कहती है कि आप FindAndCopyFiles.ps1 को कॉल कर रहे हैं। क्या कोई और कोड है जिसे आप साझा कर सकते हैं? कभी-कभी त्रुटियां आपको गलत दिशा में इंगित कर सकती हैं। त्रुटि कहीं और हो सकती है। –

+0

आह, मैं असंगतता के लिए क्षमा चाहता हूं। मैंने समस्या को ट्रैक करने के लिए SayItAgain को एक साधारण उदाहरण के रूप में बनाया है। मैंने गलत त्रुटि की प्रतिलिपि बनाई, मूल स्क्रिप्ट से एक। मैं इसे अपने परिशिष्ट में समझाऊंगा। –

उत्तर

26

मैंने समस्या हल कर दी है। मैं अपनी अपूर्ण और असंगत जानकारी के लिए क्षमा चाहता हूं। मैंने इसे सटीक बनाने के लिए समस्या का विवरण सही कर दिया है। हालांकि आपकी मदद के लिए मैं आपको धन्यवाद देता हूं।

समस्या का स्रोत यह है कि मैं पैराम कीवर्ड को कई बार गलत तरीके से उपयोग कर रहा था।

Param($p, $d) 

यह प्रयोग Windows PowerShell सहायता लेख "about_Functions" में समझाया गया है: सही उपयोग निम्नलिखित की तरह एक भी परम घोषणा के भीतर कई मानकों की घोषणा करने के लिए है।

49

क्या आपकी पर्म ($ पी) आपकी स्क्रिप्ट में पहली पंक्ति है? यदि ऐसा नहीं है, तो पैराम त्रुटि का कारण बन सकता है। सुनिश्चित करें कि आपका param ($ p) पहली पंक्ति है।

+1

यह समस्या की सबसे अधिक संभावना है लेकिन पहली गैर-टिप्पणी वाली रेखा पर्याप्त होगी। –

+0

जबकि जॉन इंगल द्वारा स्वीकृत उत्तर ने अपनी समस्या हल कर दी होगी। मुझे लगता है कि यह संभवतः 'पैराम्स' के बारे में समस्या है, अन्य प्रोग्रामर का सामना करना पड़ता है और सटीक समाधान प्रदान किया जाता है। धन्यवाद @ डेविड। –

+0

अगर केवल त्रुटि संदेश का उल्लेख किया हो सकता है! – rob

1

इस स्क्रिप्ट चल रहा है,

cls 

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

Write-Host "Url: $Url" 

मैं एक ही त्रुटि

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.

मिला जब मैं बाहर शीर्ष यह काम किया पर cls टिप्पणी की,

#cls 

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

Write-Host "Url: $Url" 
+5

परम कीवर्ड के उपयोग से पहले व्हाइटस्पेस या टिप्पणियों के अलावा कुछ भी नहीं हो सकता है, यही कारण है कि आपको त्रुटि मिली है। –

संबंधित मुद्दे