IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scripts/Batch Discussion :

Fonction avec un paramètre non obligatoire


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Consultant IT
    Inscrit en
    Février 2016
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant IT

    Informations forums :
    Inscription : Février 2016
    Messages : 14
    Par défaut Fonction avec un paramètre non obligatoire
    Bonjour,

    Je suis nouveau dans le powershell.
    J'aimerais construire une fonction avec 2 paramètres obligatoires et 1 paramètre qu'il n'est pas obligatoire de saisir.

    Champs obligatoires :
    - varDriveName
    - varMappingPath

    Champ pas obligatoires :
    - Persist

    J'ai trouvé un contournement mais c'est pas vraiment propre car a chaque fois que j'appel la fonction, je dois tagger le "y" ou le "n" pour savoir si le lecteur va être persistant ou non.

    Appel de la fonction pour un lecteur persistant : "MountNetworkDrive u \\xxx\mypath y"
    Appel de la fonction pour un lecteur non persistant : "MountNetworkDrive u \\xxx\mypath n"


    L'idée, ca serait de pouvoir enlever le paramètre quand j'ai pas besoin d'un lecteur persistant et de mettre -persist quand j'ai besoin d'un lecteur persistant et si possible dans le code d'enlever le IF qui test si le paramètre persist égal "y" ou "n" car c'est pas très beau.

    Exemple de l'appel:
    Appel de la fonction pour un lecteur persistant : "MountNetworkDrive u \\xxx\mypath -persist"
    Appel de la fonction pour un lecteur non persistant : "MountNetworkDrive u \\xxx\mypath"

    Exemple du code de la fonction:
    New-PSDrive $DriveName -PSProvider FileSystem -Root $varMappingPath $Persist

    Merci d'avance

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    function CreateNetworkDrive{
        <#
        .SYNOPSIS
    	    Function who create a network drive for a specific repository.
    
        .FUNCTIONALITY
            Network Drive
    
        .DESCRIPTION
    	    Function who create a network drive for a specific repository
    	
        .PARAMETER varDriveName
            Name of the network drive you want to mount
    
        .PARAMETER varMappingPath
    	    Full path to the directory you want to mount
    
        .PARAMETER Persist
            Fill 'y' or 'n' if you want a persistent network drive or not
    
        #>	
        PARAM
        (
            [string] $varDriveName,
            [string] $varMappingPath,
            [string] $Persist
        )
        if($Persist -eq "y"){
            New-PSDrive $DriveName -PSProvider FileSystem -Root $varMappingPath -Persist
            }
        elseif ($Persist -eq "n"){
            New-PSDrive $DriveName -PSProvider FileSystem -Root $varMappingPath
        }
        else{
            DisplayLog "Operation failed"
        } 
    }

  2. #2
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Billets dans le blog
    1
    Par défaut
    Salut,
    Citation Envoyé par zaert Voir le message
    L'idée, ca serait de pouvoir enlever le paramètre quand j'ai pas besoin d'un lecteur persistant et de mettre -persist quand j'ai besoin d'un lecteur persistant et si possible dans le code d'enlever le IF qui test si le paramètre persist égal "y" ou "n" car c'est pas très beau.
    pour un paramètre optionnel on utilise un type [Switch].
    Quant au IF on ne peut pas l'enlever, car il faut bien déterminer si le switch -Persist est présent ou pas sur la ligne de commande...

  3. #3
    Membre averti
    Homme Profil pro
    Consultant IT
    Inscrit en
    Février 2016
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant IT

    Informations forums :
    Inscription : Février 2016
    Messages : 14
    Par défaut
    Salut,

    Ok merci pour l'info, je savais pas qu'il y avait un type pour les variables optionnelles.

    Je test et te tiens au courant

    Merci

  4. #4
    Membre averti
    Homme Profil pro
    Consultant IT
    Inscrit en
    Février 2016
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant IT

    Informations forums :
    Inscription : Février 2016
    Messages : 14
    Par défaut
    Citation Envoyé par Laurent Dardenne Voir le message
    Salut,

    pour un paramètre optionnel on utilise un type [Switch].
    Quant au IF on ne peut pas l'enlever, car il faut bien déterminer si le switch -Persist est présent ou pas sur la ligne de commande...
    Je n'arrive pas à le mettre en place, as-tu des informations, tutoriaux ... à me recommander ou bien est-ce que tu peux m'expliquer comment l'utiliser ? Car j'ai remplacé le tag "string" par "switch" mais je pense qu'il me manque des éléments

  5. #5
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Billets dans le blog
    1
    Par défaut
    Essaie ceci :
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    function CreateNetworkDrive{
      Param(
          [string] $varDriveName,
     
          [string] $varMappingPath,
     
          [switch] $Persist
      )
     
      if ($Persist){
          New-PSDrive $DriveName -PSProvider FileSystem -Root $varMappingPath -Persist
      }
      else {
          New-PSDrive $DriveName -PSProvider FileSystem -Root $varMappingPath
      }
    }
    Le code if ($persist) équivaut à $Persist.IsPresent:
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    [switch] $Persist=$false 
    $Persist.IsPresent
    #False
     
    [switch] $Persist=$true
    $Persist.IsPresent
    #True
    Ainsi on manipule un type booléen et pas un type chaîne de caractères.

Discussions similaires

  1. Réponses: 36
    Dernier message: 15/05/2013, 13h44
  2. Réponses: 3
    Dernier message: 05/09/2006, 00h47
  3. Réponses: 6
    Dernier message: 24/02/2005, 09h44
  4. Erreur sur une fonction avec des paramètres
    Par Elois dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 05/05/2004, 21h00
  5. Une fonction avec des attributs non obligatoires
    Par YanK dans le forum Langage
    Réponses: 5
    Dernier message: 15/11/2002, 13h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo