2011-03-08 8 views
40

मेरे पास एक पावरहेल स्क्रिप्ट (setup.ps1) है, जिसे हम अपने विकास पर्यावरण सेटअप स्क्रिप्ट के लिए प्रवेश बिंदु के रूप में उपयोग करते हैं। यह एक पैरामीटर लेता है:मैं अपने पावरहेल स्क्रिप्ट पैरामीटर के लिए मदद संदेश कैसे प्राप्त करूं?

param(
    [Parameter(Position=0,HelpMessage="The targets to run.")] 
    [Alias("t")] 
    [string[]] 
    $Targets = "Help" 
) 

जब मैं

PS > get-help .\setup.ps1 -detailed 
मापदंडों खंड में

चलाने के लिए, मेरी मदद की संदेश प्रकट नहीं होता है:

PARAMETERS 
    -Targets <String[]> 

क्या मैं पाने के लिए क्या करना होगा मेरे पैरामीटर प्रदर्शित करने के लिए संदेश मदद करते हैं?

उत्तर

66

आपने फ़ाइल के शीर्ष पर टिप्पणी की एक निश्चित शैली डाली जिसे PowerShell सहायता प्रणाली द्वारा डीकोड किया जा सकता है। यहाँ एक उदाहरण है:

<# 
.SYNOPSIS 
    . 
.DESCRIPTION 
    . 
.PARAMETER Path 
    The path to the . 
.PARAMETER LiteralPath 
    Specifies a path to one or more locations. Unlike Path, the value of 
    LiteralPath is used exactly as it is typed. No characters are interpreted 
    as wildcards. If the path includes escape characters, enclose it in single 
    quotation marks. Single quotation marks tell Windows PowerShell not to 
    interpret any characters as escape sequences. 
.EXAMPLE 
    C:\PS> 
    <Description of example> 
.NOTES 
    Author: Keith Hill 
    Date: June 28, 2010  
#> 
function AdvFuncToProcessPaths 
{ 
    [CmdletBinding(DefaultParameterSetName="Path")] 
    param(
     [Parameter(Mandatory=$true, Position=0, ParameterSetName="Path", 
        ValueFromPipeline=$true, 
        ValueFromPipelineByPropertyName=$true, 
        HelpMessage="Path to ...")] 
     [ValidateNotNullOrEmpty()] 
     [string[]] 
     $Path, 

     [Alias("PSPath")] 
     [Parameter(Mandatory=$true, Position=0, ParameterSetName="LiteralPath", 
        ValueFromPipelineByPropertyName=$true, 
        HelpMessage="Path to ...")] 
     [ValidateNotNullOrEmpty()] 
     [string[]] 
     $LiteralPath 
    ) 
    ... 

अधिक जानकारी के लिए सहायता विषय देखें - man about_comment_based_help

+6

मैं देखता हूं। तो 'पैरामीटर' विशेषता पर 'हेल्पमेसेज' प्रॉपर्टी वास्तव में पावरशेल सहायता प्रणाली द्वारा * अनदेखा * है। यह भ्रमित नहीं है। :/ –

+5

हाँ यह थोड़ा उलझन में है। पैरामीटर पर हेल्प मैसेज विशेषता * को * अनदेखा नहीं है। जब आप एक अनिवार्य पैरामीटर निर्दिष्ट किए बिना कमांड का आह्वान करते हैं तो इसका उपयोग किया जाता है। उस बिंदु पर आपको उस पैरामीटर के लिए मान दर्ज करने के लिए कहा जाता है। यदि आप 'हेल्पमेसेज' निर्दिष्ट करते हैं, तो वह पाठ उस प्रॉम्प्ट के हिस्से के रूप में प्रदर्शित होता है। –

+4

लेकिन केवल अगर आप "!" दर्ज करते हैं जब PowerShell उस अनिवार्य पैरामीटर के मान के लिए संकेत दे रहा है। यह थोड़ा ज्ञात है। – JasonMArcher

11

जाहिर है अगर आप एक मदद हैडर परिभाषित किया गया है, तो आप सिर्फ एक टिप्पणी (#) पैरामीटर के पीछे का उपयोग कर सकते (इस उदाहरण में:। #The लक्ष्यों को चलाने के लिए):

<# 
.SYNOPSIS 
    . 
.DESCRIPTION 
    . 
.PARAMETER Path 
    The path to the . 
.PARAMETER LiteralPath 
    Specifies a path to one or more locations. Unlike Path, the value of 
    LiteralPath is used exactly as it is typed. No characters are interpreted 
    as wildcards. If the path includes escape characters, enclose it in single 
    quotation marks. Single quotation marks tell Windows PowerShell not to 
    interpret any characters as escape sequences. 
#> 

Param(
    [String]$Targets = "Help" #The targets to run. 
) 

परिणाम इन:

PS C:\> Get-help .\Setup.ps1 -Detailed 

NAME 
    C:\Setup.ps1 

SYNOPSIS 
    . 


SYNTAX 
    C:\Setup.ps1 [[-Targets] <String>] [<CommonParameters>] 


DESCRIPTION 
    . 


PARAMETERS 
    -Targets <String> 
     The targets to run. 
+5

वैकल्पिक रूप से आप पैरामीटर से पहले लाइन पर टिप्पणी डाल सकते हैं, जो लंबे विवरण और लंबे पैरामीटर नामों के लिए बेहतर काम कर सकता है। – 31eee384

+0

आप उस पैरामीटर में लक्ष्य पैरामीटर क्यों नहीं डालते जहां आप पैरामीटर का वर्णन करते हैं, ई। जी। '.PARAMETER पथ' – Timo

+0

पीएस 3 में आपको 'सहायता-सहायता' के लिए एक अलग (बेहतर) परिणाम मिलता है: सभी पैरामीटर्स और '.PARAMETER' में विवरण दिखाए जाते हैं। – Timo

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