Script.ps1 -help How to do

Hello there,

I want to add some Help when i tape Script.ps1 -help, but it do not work !
The script

<#
.SYNOPSIS
Creation du fichier CSR pour le Certificate Authority, avec les Alias, CName / IP.

.DESCRIPTION
- Creation du fichier CSR pour le Certificate Authority, avec les Alias, CName / IP
- Ce script utilise la commande CertReq.exe et transforme l'input donné en CSR

.PARAMETER FQDN
Demande le Fully Qualified Domain Name du server.

.PARAMETER Email
Mettre le Mail du service

.PARAMETER DestinationFilePath
Demande le chemin ou sera stocker le fichier CSR

.EXAMPLE
CreateCSR-CertReq.ps1 -FQDN toto.domain.com -DestinationPath c:\temp -Email titi@gmail.com
$certReqParams = @{
    FQDN                = servername01, toto.domain.com
    Aliases             = servername01, toto.domain.com, toto, 192.168.0.1
    DestinationFilePath = C:\Temp
}
CreateCSR-CertReq.ps1 @certReqParams

.NOTES
AUTHOR: Dackeyras

.LINK
#>


param(
    [Parameter(Mandatory = $true)]
    [String]$FQDN,
    [Parameter(Mandatory = $true)]
    [String]$Email,
    [Parameter(Mandatory=$true)]
    [string]$DestinationFilePath,
    [Parameter(Mandatory=$false)]
    [switch]$help 
)

If($help)
{
    Write-Host "Function name is"
    quit
}
Else
{
    Write-Host "Création du CertificateRequest(CSR) pour $FQDN"

    #Vérification de la syntax de $FQDN
    if ($FQDN -notMatch '\w{1,}\.\w{1,}\.?[\w.]*') {
        Write-Warning -Message "Le FQDN: $($FQDN) demble être invalide.`n La syntax doit être du type: host.domain.com"
        exit
    }
    Else
    {
        ### Calcul de valeur à partir de $FQDN ###
        $HostName = $FQDN.Split('.')[0]
        $NS = nslookup $HostName
        $IP = $NS[4].Split(" ")[2]
    }

### Vérification de l'existance du chemin DestinationFilePath
    if (-not (Test-Path -Path $DestinationFilePath)) {
        Write-Warning -Message "Path: $($DestinationFilePath) n'existe pas. Merci de mettre un chemin valid."
        exit
    }
### Vérification du nom du chemin et qu'il n'y a pas bin un / sinon, on l'ajoute.
    if ($DestinationFilePath.Substring($DestinationFilePath.Length -1,1) -eq '\') {
        $DestinationFilePath = $DestinationFilePath + $FQDN + '.csr'
    } else {
        $DestinationFilePath = $DestinationFilePath + '\' + $FQDN + '.csr'
    }


### Corps du paramétrage CSR
$certificateINF = @"
[Version]
Signature= "Windows NT$" 
[NewRequest]
Subject = "CN=${FQDN}" 
KeyLength = 2048
Exportable = False
PrivateKeyArchive = FALSE
[EnhancedKeyUsageExtension]
OID=1.3.6.1.5.5.7.3.1
[Extensions]
2.5.29.17 = "{text}"
_continue_ = "DNS=${FQDN}&"
_continue_ = "DNS=${HostName}&" 
_continue_ = "ipaddress=${IP}&"
_continue_ = "email=${Email}&"
"@
    write-Host "Certificate Request en cours de génération"

    $tmpFile        = [System.IO.Path]::GetTempFileName()
    $certificateINF | Out-File $tmpFile
    & certreq.exe -new $tmpFile $DestinationFilePath

    write-output "Certificate Request a été généré"
}









Could you help me plz.

Thx a lot ^^

Ok i have found !
We must have to Param The first for the Help, the twice for the script, like that :

<#
.SYNOPSIS
Creation du fichier CSR pour le Certificate Authority, avec les Alias, CName / IP.

.DESCRIPTION
- Creation du fichier CSR pour le Certificate Authority, avec les Alias, CName / IP
- Ce script utilise la commande CertReq.exe et transforme l'input donné en CSR

.PARAMETER FQDN
Demande le Fully Qualified Domain Name du server.

.PARAMETER Email
Mettre le Mail du service

.PARAMETER DestinationFilePath
Demande le chemin ou sera stocker le fichier CSR

.EXAMPLE
CreateCSR-CertReq.ps1 -FQDN toto.domain.com -DestinationPath c:\temp -Email titi@gmail.com
$certParams = @{
    FQDN                = servername01, toto.domain.com
    Aliases             = servername01, toto.domain.com, toto, 192.168.0.1
    DestinationFilePath = C:\Temp
}
CreateCSR-CertReq.ps1 @certParams

.NOTES
AUTHOR: Dackeyras

.LINK
#>


param(
    [Parameter(Mandatory=$false)]
    [switch]$help 
)

If($help)
{
    Write-Host "Function name is"
}
Else
{
    param(
        [Parameter(Mandatory = $true)]
        [String]$FQDN,
        [Parameter(Mandatory = $true)]
        [String]$Email,
        [Parameter(Mandatory=$true)]
        [string]$DestinationFilePath
    )

    Write-Host "Création du CertificateRequest(CSR) pour $FQDN"

    #Vérification de la syntax de $FQDN
    if ($FQDN -notMatch '\w{1,}\.\w{1,}\.?[\w.]*') {
        Write-Warning -Message "Le FQDN: $($FQDN) demble être invalide.`n La syntax doit être du type: host.domain.com"
        exit
    }
    Else
    {
        ### Calcul de valeur à partir de $FQDN ###
        $HostName = $FQDN.Split('.')[0]
        $NS = nslookup $HostName
        $IP = $NS[4].Split(" ")[2]
    }

### Vérification de l'existance du chemin DestinationFilePath
    if (-not (Test-Path -Path $DestinationFilePath)) {
        Write-Warning -Message "Path: $($DestinationFilePath) n'existe pas. Merci de mettre un chemin valid."
        exit
    }
### Vérification du nom du chemin et qu'il n'y a pas bin un / sinon, on l'ajoute.
    if ($DestinationFilePath.Substring($DestinationFilePath.Length -1,1) -eq '\') {
        $DestinationFilePath = $DestinationFilePath + $FQDN + '.csr'
    } else {
        $DestinationFilePath = $DestinationFilePath + '\' + $FQDN + '.csr'
    }


### Corps du paramétrage CSR
$certificateINF = @"
[Version]
Signature= "Windows NT$" 
[NewRequest]
Subject = "CN=${FQDN}" 
KeyLength = 2048
Exportable = False
PrivateKeyArchive = FALSE
[EnhancedKeyUsageExtension]
OID=1.3.6.1.5.5.7.3.1
[Extensions]
2.5.29.17 = "{text}"
_continue_ = "DNS=${FQDN}&"
_continue_ = "DNS=${HostName}&" 
_continue_ = "ipaddress=${IP}&"
_continue_ = "email=${Email}&"
"@
    write-Host "Certificate Request en cours de génération"

    $tmpFile        = [System.IO.Path]::GetTempFileName()
    $certificateINF | Out-File $tmpFile
    & certreq.exe -new $tmpFile $DestinationFilePath

    write-output "Certificate Request a été généré"
}