Question
Appel d'une fonction
- DEMINFO
- Auteur du sujet
- Hors Ligne
- Membre junior
Réduire
Plus d'informations
- Messages : 29
- Remerciements reçus 0
il y a 3 ans 2 mois #30447
par DEMINFO
Appel d'une fonction a été créé par DEMINFO
Bonjour,
J'ai 2 scripts qui doivent utiliser la même fonction. Je ne voudrai pas mettre le code de la fonction dans chaque script pour simplifier la maintenance. Logiquement, quand j'exécute SCRIPT1 ou SCRIPT2 la valeur de Objet devrait s'afficher ?!?
J'ai fait l'essai en mettant le chemin d'accès mais rien n'y fait (C:\DATA\TEMP\POWERSHELL\TestObjet.ps1 $Objet).
Quelle solution ?
D'avance merci
Le 1er script SCRIPT1.ps1 se trouve dans C:\DATA\TEMP\POWERSHELL et contient :
$Objet="SCRIPT1"
TestObjet $Objet
Le 2ème script SCRIPT2.ps1 se trouve dans C:\DATA\TEMP\POWERSHELL et contient :
$Objet="SCRIPT2"
TestObjet $Objet
La fonction TestObjet.ps1 se trouve dans C:\DATA\TEMP\POWERSHELL et contient :
function TestObjet ($Objet)
{
Write-Host "Valeur de Objet="$Objet
}
J'ai 2 scripts qui doivent utiliser la même fonction. Je ne voudrai pas mettre le code de la fonction dans chaque script pour simplifier la maintenance. Logiquement, quand j'exécute SCRIPT1 ou SCRIPT2 la valeur de Objet devrait s'afficher ?!?
J'ai fait l'essai en mettant le chemin d'accès mais rien n'y fait (C:\DATA\TEMP\POWERSHELL\TestObjet.ps1 $Objet).
Quelle solution ?
D'avance merci
Le 1er script SCRIPT1.ps1 se trouve dans C:\DATA\TEMP\POWERSHELL et contient :
$Objet="SCRIPT1"
TestObjet $Objet
Le 2ème script SCRIPT2.ps1 se trouve dans C:\DATA\TEMP\POWERSHELL et contient :
$Objet="SCRIPT2"
TestObjet $Objet
La fonction TestObjet.ps1 se trouve dans C:\DATA\TEMP\POWERSHELL et contient :
function TestObjet ($Objet)
{
Write-Host "Valeur de Objet="$Objet
}
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 6302
- Remerciements reçus 68
il y a 3 ans 2 mois #30448
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Appel d'une fonction
Salut,
dans ton cas le script déclare une fonction, on doit donc charger le script, puis exécuter la fonction :l'inconvénient est que tu codes en dur le nom répertoire et le code de ton script déclarant la fonction ne doit rien faire d'autre (possible effet de bord).
Ici il y a plusieurs possibilité, celle autour d'un module me semble est préférable puisque le rôle d'un module est de partager du code.
>>pour simplifier la maintenance
Faut voir
Simplifier l'écriture du code certainement.
dans ton cas le script déclare une fonction, on doit donc charger le script, puis exécuter la fonction :
cd C:\DATA\TEMP\POWERSHELL
.\TestObjet.ps1
TestObjet.ps1 'Objet'
Ici il y a plusieurs possibilité, celle autour d'un module me semble est préférable puisque le rôle d'un module est de partager du code.
>>pour simplifier la maintenance
Faut voir
Simplifier l'écriture du code certainement.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- DEMINFO
- Auteur du sujet
- Hors Ligne
- Membre junior
Réduire
Plus d'informations
- Messages : 29
- Remerciements reçus 0
il y a 3 ans 2 mois #30453
par DEMINFO
Réponse de DEMINFO sur le sujet Appel d'une fonction
Bonsoir,
Tous mes scripts et fonctions seront toujours dans le même répertoire.
J'ai donc créé un script "Fonctions" qui rassemble 2 fonctions de tests.
Mon nouveau script est :
#Chargement des Fonctions
$CheminScript = [System.IO.Path]::GetDirectoryName($MyInvocation.MyCommand.Definition)
cd $CheminScript
. .\Fonctions.ps1
#Debut des traitements
$Objet="SCRIPT1" ; $Coul="Vert" ; TestPhrase $Objet $Coul
$Objet="SCRIPT2" ; $Coul="Rouge" ; TestPhrase $Objet $Coul
$A=1 ; $B=2 ; TestConcat $A $B
Le script Fonctions qui rassemble les fonctions est :
function TestPhrase ($Objet,$Coul)
{
Write-Host "Valeur=$Objet de couleur $Coul"
}
function TestConcat ($A,$
{
Write-Host "Valeur=$A$B"
}
Je ne sais pas si c'est très "orthodoxe" mais ça répond très bien à mes besoins.
Un GRAND MERCI pour ton aide et tes précieux conseils.
Didier
Tous mes scripts et fonctions seront toujours dans le même répertoire.
J'ai donc créé un script "Fonctions" qui rassemble 2 fonctions de tests.
Mon nouveau script est :
#Chargement des Fonctions
$CheminScript = [System.IO.Path]::GetDirectoryName($MyInvocation.MyCommand.Definition)
cd $CheminScript
. .\Fonctions.ps1
#Debut des traitements
$Objet="SCRIPT1" ; $Coul="Vert" ; TestPhrase $Objet $Coul
$Objet="SCRIPT2" ; $Coul="Rouge" ; TestPhrase $Objet $Coul
$A=1 ; $B=2 ; TestConcat $A $B
Le script Fonctions qui rassemble les fonctions est :
function TestPhrase ($Objet,$Coul)
{
Write-Host "Valeur=$Objet de couleur $Coul"
}
function TestConcat ($A,$
{
Write-Host "Valeur=$A$B"
}
Je ne sais pas si c'est très "orthodoxe" mais ça répond très bien à mes besoins.
Un GRAND MERCI pour ton aide et tes précieux conseils.
Didier
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 6302
- Remerciements reçus 68
il y a 3 ans 2 mois #30456
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Appel d'une fonction
>>Je ne sais pas si c'est très "orthodoxe" mais ça répond très bien à mes besoins.
Effectivement c'est une des autres possibilités.
Il existe la variable Automatique $PsScriptRoot qui peu simplifier l'affectation de $CheminScript.
Effectivement c'est une des autres possibilités.
Il existe la variable Automatique $PsScriptRoot qui peu simplifier l'affectation de $CheminScript.
Tutoriels PowerShell
Les utilisateur(s) suivant ont remercié: DEMINFO
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.069 secondes
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les débutants
- Appel d'une fonction