2011-01-12 7 views
17

Próbuję użyć polecenia cmdlet Get-Help, aby wyświetlić pomoc opartą na komentarzach w tym samym formacie, w którym są wyświetlane tematy pomocy cmdlet, które są generowane z plików XML. Możliwość tego jest udokumentowana w about_Comment_based_Help na TechNet, ale kiedy wykonuję cmdlet get-help w stosunku do mojego skryptu, otrzymuję tylko nazwę skryptu zwróconą. Każda pomoc będzie doceniona!Skorzystaj z cmdletu Get-Help, aby wyświetlać pomoc w komentarzach w tym samym formacie.

PS C:\Admin> Get-Help .\checksystem.ps1 -full 
checksystem.ps1 

checksystem.ps1 scenariusz:

function IsAlive { 
     <# 
     .DESCRIPTION 
     Checks to see whether a computer is pingable or not. 

     .PARAMETER computername 
     Specifies the computername. 

     .EXAMPLE 
     IsAlive -computername testwks01 

     .NOTES 
     This is just an example function. 
     #> 


      param (
       $computername 
      ) 
      Test-Connection -count 1 -ComputerName $computername -TimeToLive 5 | 
      Where-Object { $_.StatusCode -eq 0 } | 
      Select-Object -ExpandProperty Address 
     } 

IsAlive -computername 192.168.1.1 

Odpowiedz

16

To zadziała, ale próbujesz uzyskać pomoc dotyczącą skryptu, ale dodałeś pomoc do funkcji. Jeśli znajdziesz źródło skryptu, a następnie wpisz "get-help", zobaczysz pomoc dotyczącą tej funkcji.

. .\checksystem.ps1 ; get-help isalive -full 
12

To działa, musisz tylko upewnić się, że masz odpowiednie rubryki. Zawsze umieszczałem blok komentarza bezpośrednio nad funkcją. Nie jestem pewien, czy ma działać wewnątrz tej funkcji, czy nie.

Poniżej znajduje się przykład jednej z moich funkcji, która ma działającą pomoc doktora.

############################################################################## 
#.SYNOPSIS 
# Gets a COM object from the running object table (ROT) similar to GetObject 
# in Visual Basic. 
# 
#.DESCRIPTION 
# To maintain consistency with New-Object this cmdlet requires the -ComObject 
# parameter to be provided and the TypeName parameter is not supported. 
# 
#.PARAMETER TypeName 
# Not supported, but provided to maintain consistency with New-Object. 
# 
#.PARAMETER ComObject 
# The ProgID of a registered COM object, such as MapPoint.Application. 
# 
#.PARAMETER Force 
# If an existing object is not found, instead of writing an error, a new 
# instance of the object will be created and returned. 
# 
#.EXAMPLE 
# $olMailItem = 0 
# Get-Object -ComObject Outlook.Application | %{$_.CreateItem($olMailItem).Display()} 
############################################################################## 
function Get-Object { 

    [CmdletBinding(DefaultParameterSetName='Net')] 
    param (

     [Parameter(ParameterSetName='Net', Position=1, Mandatory=$true)] 
     [String]$TypeName, 

     [Parameter(ParameterSetName='Com', Mandatory=$true)] 
     [String]$ComObject, 

     [Parameter()] 
     [Switch]$Force 

    ) 

    if ($TypeName) { throw '-TypeName is not supported. Use -ComObject instead.' } 

    if ($ComObject) { 
     try { 
      [System.Runtime.InteropServices.Marshal]::GetActiveObject($ComObject) 
     } 
     catch [System.Management.Automation.MethodInvocationException] { 
      if ($Force) { New-Object -ComObject $ComObject } 
      else { Write-Error "An active object of type $ComObject is not available." } 
     } 
    } 

} 
+3

W PowerShell wersja 3 komentarze działają zarówno wewnątrz jak i na zewnątrz funkcji: http://technet.microsoft.com/en-us/library/dd819489.aspx –

+1

Jeszcze lepiej, w PowerShell 3, nawet nie masz trzeba oznaczyć pomoc parametru. Po prostu umieść zwykły komentarz nad parametrem, a PowerShell go wyliczy. – Josh

+0

Zgodnie z tymi http://technet.microsoft.com/en-us/library/dd819489.aspx komentarze poza funkcją dotyczą również dodatku powershell 2.0. – Raj

4

Uwaga - Jeśli pacjent zapomni dodać nazwę parametru po .PARAMETER żaden z niestandardowym tekstem pomocy pokaże po uruchomieniu get-help

Podobnie, jeśli błędnie którekolwiek ze słów kluczowych niestandardowa pomoc nie będzie wyświetlana.

Powiązane problemy