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 :

Fonctions dans une Fonction :/ [PowerShell]


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Août 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Août 2017
    Messages : 5
    Par défaut Fonctions dans une Fonction :/
    Bonjour à tous,

    Le titre n'étant pas très explicite, je vais essayer de m'expliquer.

    Débutant en PowerShell, j'ai écris 2 scripts que j'ai mis dans une fonction. Et ce que je cherche à faire, mais sans succès, c'est de pouvoir, lors de l'appel de ma fonction, choisir entre l'un ou l'autre des scripts, tout en y intégrant un argument. Par exemple:

    Code PowerShell : Sélectionner tout - Visualiser dans une fenêtre à part
    C:\MaFonction.ps1 -Script[1ou2] "Argument"

    J'ai bien essayé des choses du genre:

    Code PowerShell : Sélectionner tout - Visualiser dans une fenêtre à part
    function MaFonction([string]$Script1 , [string]$Script2) {...}

    ou

    Code PowerShell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function MaFonction {
     
    [CmdletBinding()]
     
    Param (
     
    [ValidateNotNullOrEmpty()]
     
    [Parameter(Mandatory=$true)]
     
    [string]$Script1 , [string]$Script2
     
    )...}

    Et bien d'autre chose un peu farfelu mais je n'y arrive pas.

    Quelqu'un aurait une piste please ???

  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,
    déjà la mécanique d'appel soit l'un soit l'autre :
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    function MaFonction {
     [CmdletBinding()]
     
     Param (
          [Parameter(ParameterSetName='Fonctionnalite1')]
        [Switch] $Fonctionnalite1,
     
          [Parameter(ParameterSetName='Fonctionnalite2')]
        [Switch] $Fonctionnalite2
     )
        if ($Fonctionnalite1)
        { '& c:\temp\Script1' }
        elseif ($Fonctionnalite2)
        { '& c:\temp\Script2'}
        else
        { Write-error 'Préciser le switch -Fonctionnalite1 ou  -Fonctionnalite2'}
    }
    MaFonction
     #MaFonction : Le jeu de paramètres ne peut pas être résolu à l'aide des paramètres nommés spécifiés.
     
    MaFonction -Fonctionnalite1 -Fonctionnalite2
     #MaFonction : Le jeu de paramètres ne peut pas être résolu à l'aide des paramètres nommés spécifiés.
     
    MaFonction -Fonctionnalite1
    #& c:\temp\Script1
     
    MaFonction -Fonctionnalite2
     #& c:\temp\Script2
    Reste a savoir si le nom et le chemin du script est inconnu ou pas et s'il est dans le même répertoire (cf. $PSscriptRoot) ou pas ?

    Ensuite chaque script appelé a-t-il un seul argument, s'il a le même nom et le même type ?
    Il a de nombreuse manière de faire et cela dépend de la version de Powershell que tu cibles la v2, la v5.1, les deux.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Août 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Août 2017
    Messages : 5
    Par défaut
    Bonjour Laurent,

    Merci pour ta réponse!

    Pour être plus précis:

    - Il n'y aura qu'un script à la fois et qu'un seul argument
    - En ce qui concerne la version ça serait plus la 5.1

    Et concernant le chemin, les 2 scripts se trouvent actuellement dans la "Fonction" que j'appelle !

    Schéma:

    Code PowerShell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Function MaFonction {
     
    Param()
     
                script1
     
                script2
     
    }
     
    C:\MaFonction.ps1 -Script[1ou2] "Argument"


    En essayant ce que tu me marques j'ai : "Impossible de trouver un paramètre positionnel acceptant l'argument"

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Août 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Août 2017
    Messages : 5
    Par défaut
    Finalement ça n'a pas trop mal marché à partir du moment ou j'ai remplacé [Switch] par [String], mais la ligne else { Write-error 'Préciser le switch -Fonctionnalite1 ou -Fonctionnalite2'} ne fonctionne pas, si je ne met rien j'ai " Le jeu de paramètres ne peut pas être résolu à l'aide des paramètres nommés spécifiés."

  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
    Citation Envoyé par olivrfit Voir le message
    mais la ligne else { Write-error 'Préciser le switch -Fonctionnalite1 ou -Fonctionnalite2'} ne fonctionne pas
    C'est normal, si tu change le type, PS se comporte différemment :
    Code PowerShell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if ('') {'ok'} else {'nok'}
    #nok
     
     
    if ('PasVide') {'ok'} else {'nok'}
    #ok
    C'est du Powershell :-)

    Ma proposition était basée sur le fait que les scripts appelés sont toujours les mêmes, seul l'argument change.
    Mais je ne suis pas sûr d'avoir bien compris les données de ton problème...

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Août 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Août 2017
    Messages : 5
    Par défaut
    En tout cas, ta proposition marche alors je vais la garder tant qu'il n'y a pas de bug.
    Je marque comme résolu

    Merci pour tout !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Fonction callback dans une classe
    Par julian_ross dans le forum MFC
    Réponses: 8
    Dernier message: 02/03/2004, 11h42
  2. [VStudio 6] pb avec fonctions dans une DLL
    Par MogDeChNord dans le forum MFC
    Réponses: 8
    Dernier message: 08/01/2004, 08h57
  3. [Postgresql]Connecter à une autre base dans une fonction
    Par alex2205 dans le forum Requêtes
    Réponses: 2
    Dernier message: 05/05/2003, 11h30
  4. [VBA-E] Fonction sum() dans une cellule
    Par Gonzo dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 16/12/2002, 10h18
  5. [Turbo Pascal] Allocation et désallocation de pointeurs dans une fonction
    Par neird dans le forum Turbo Pascal
    Réponses: 13
    Dernier message: 17/11/2002, 20h14

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