2011-08-23 19 views

उत्तर

27

इस तरह से प्रत्येक पैरामीटर के ऊपर एक विशेषता में यह निर्दिष्ट करें:

function Do-Something{ 
    [CmdletBinding()] 
    param(
     [Parameter(Position=0,mandatory=$true)] 
     [string] $aMandatoryParam, 
     [Parameter(Position=1,mandatory=$true)] 
     [string] $anotherMandatoryParam) 

    process{ 
     ... 
    } 
} 
9

एक पैरामीटर अनिवार्य बनाने के लिए पैरामीटर वर्णन करने के लिए "सच अनिवार्य = $" एक जोड़ें। पैरामीटर वैकल्पिक बनाने के लिए बस "अनिवार्य" कथन छोड़ दें।

इस कोड को दोनों स्क्रिप्ट और समारोह मापदंडों के लिए काम करता है:

[CmdletBinding()] 
param(
    [Parameter(Mandatory=$true)] 
    [String]$aMandatoryParameter, 

    [String]$nonMandatoryParameter, 

    [Parameter(Mandatory=$true)] 
    [String]$anotherMandatoryParameter 

) 

यकीन है कि "param" बयान पहले एक या तो स्क्रिप्ट या समारोह में (आदेश और रिक्त लाइनों को छोड़ कर) की हुई है।

आप मानकों की पुष्टि करने के "रातों-सहायता" cmdlet का उपयोग कर सकते हैं सही ढंग से परिभाषित किया गया है:

PS C:\> get-help Script.ps1 -full 
[...] 
PARAMETERS 
    -aMandatoryParameter <String> 

     Required?     true 
     Position?     1 
     Default value 
     Accept pipeline input?  false 
     Accept wildcard characters? 

    -NonMandatoryParameter <String> 

     Required?     false 
     Position?     2 
     Default value 
     Accept pipeline input?  false 
     Accept wildcard characters? 

    -anotherMandatoryParameter <String> 

     Required?     true 
     Position?     3 
     Default value 
     Accept pipeline input?  false 
     Accept wildcard characters? 
+0

बस जिज्ञासु, क्या होता है जब एक बल्ला कॉल एक .PS1 और एक अनिवार्य पैरामीटर छोड़ दिया है का कहना है की सुविधा देता है बाहर। पीएस 1 प्रतिक्रिया/त्रुटि कैसा दिखता है? – Quanda

+0

जब आप अनिवार्य पैरामीटर प्रदान किए बिना पावरशेल स्क्रिप्ट को कॉल करते हैं तो स्क्रिप्ट निष्पादित करने से पहले आपको उनके लिए इंटरैक्टिव रूप से संकेत देती है, उदा। "निम्नलिखित मानकों के लिए आपूर्ति मूल्य: एन्डेंटरी पैरामीटर:" – llmora

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