Question
include de fonction
- guillaumel
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 7
- Remerciements reçus 0
il y a 15 ans 7 mois #7623
par guillaumel
include de fonction a été créé par guillaumel
Bonjour
J'aimerais inclure un script contenant des focntions dans mes script powershell pour eviter de les taper 40 fois. mais cela ne fonctione pas.
Voici une exemple de ce que je voudrais faire, un fichier script.ps1 appel la fonction que ce trouve dans fonction.ps1.
function.ps1
function truc
{
$truc = \"OK\"
}
Script.ps1
./function.ps1
#Appel de la fonction
truc
J'espere que je suis clair par avance merci !
J'aimerais inclure un script contenant des focntions dans mes script powershell pour eviter de les taper 40 fois. mais cela ne fonctione pas.
Voici une exemple de ce que je voudrais faire, un fichier script.ps1 appel la fonction que ce trouve dans fonction.ps1.
function.ps1
function truc
{
$truc = \"OK\"
}
Script.ps1
./function.ps1
#Appel de la fonction
truc
J'espere que je suis clair par avance merci !
Connexion ou Créer un compte pour participer à la conversation.
- blanc
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 54
- Remerciements reçus 0
il y a 15 ans 7 mois #7630
par blanc
Réponse de blanc sur le sujet Re:include de fonction
Bonsoir,
Désolé, pas vu la première réponse. Tant pis, je rajoute mon grain de sel.
Sans prétendre connaître beaucoup (je débute aussi), il me semble que l'on peut le faire de 2 manières au minimum :
1 - modifier un des fichier de profils (powershell-scripting.com/index.php?optio...id=115&Itemid=73) mais faut lire l'aide [code:1]PS > $profile
C:\Documents and Settings\noel\Mes documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
#et surtout lire cette aide :
get-help about_profiles[/code:1]
2 - dans le livre page 150 le paragraphe \"prise en compte de scripts externes\" explique comment le faire de manière automatique pour toute une bibliothèque (une boucle foreach pour tous les fichiers de scripts à charger).
En 2 mots, le principe :
- écrire un fichier contenant une fonction
[code:1]#contenu du fichier commun.ps1
function monEcho {
param([string] $s)
# inverse les mots de la chaîne
$s.split(\" \") | foreach-object -begin {$t=\"\"} -process {$t=\"$_ $t\"} -end {$t}
}
[/code:1]
Lancer une console PS et charger ce fichier avec \"dot sourcing\" :
[code:1] . \"C:\tmp\commun.ps1\"[/code:1]
Vérifier que la fonction est bien disponible :
[code:1]PS > gi function:mone*
CommandType Name Definition
----
Function monEcho ...
[/code:1]
Enfin l'appeler pour voir si tout marche :
[code:1]PS > monEcho \"totot\"
totot[/code:1]
Pour mettre son résultat dans une variable :
[code:1]PS C:\Documents and Settings\noel> $p=monecho \"tutu tata\"
PS C:\Documents and Settings\noel> $p
tata tutu[/code:1]
On peut même juste taper \"mone\" puis tab et le mot \"monecho\" s'écrit tout seul.
J'apprenais lentement juste avec l'aide des get-help. Mais avec un livre (celui là est en français) en une semaine j'ai mieux compris le pipeline et l'importance du \"|GM\" et du \".gettype()\" et plein d'autres choses.
Avec la V2, il y a les fonctions avancées ( powershell-scripting.com/index.php?optio...id=327&Itemid=73 ) avec le \"CmdletBinding\", des presque cmdlet écrites en PS (comme celles de codeplex par exemple qui permettent de gérer des machines virtuelles). Pour moi, ce sera pour quand j'aurais un peu plus de de \"bouteille\".
Cordialement
Message édité par: noel, à: 19/08/10 23:53<br><br>Message édité par: noel, à: 20/08/10 00:21
Désolé, pas vu la première réponse. Tant pis, je rajoute mon grain de sel.
Sans prétendre connaître beaucoup (je débute aussi), il me semble que l'on peut le faire de 2 manières au minimum :
1 - modifier un des fichier de profils (powershell-scripting.com/index.php?optio...id=115&Itemid=73) mais faut lire l'aide [code:1]PS > $profile
C:\Documents and Settings\noel\Mes documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
#et surtout lire cette aide :
get-help about_profiles[/code:1]
2 - dans le livre page 150 le paragraphe \"prise en compte de scripts externes\" explique comment le faire de manière automatique pour toute une bibliothèque (une boucle foreach pour tous les fichiers de scripts à charger).
En 2 mots, le principe :
- écrire un fichier contenant une fonction
[code:1]#contenu du fichier commun.ps1
function monEcho {
param([string] $s)
# inverse les mots de la chaîne
$s.split(\" \") | foreach-object -begin {$t=\"\"} -process {$t=\"$_ $t\"} -end {$t}
}
[/code:1]
Lancer une console PS et charger ce fichier avec \"dot sourcing\" :
[code:1] . \"C:\tmp\commun.ps1\"[/code:1]
Vérifier que la fonction est bien disponible :
[code:1]PS > gi function:mone*
CommandType Name Definition
----
Function monEcho ...
[/code:1]
Enfin l'appeler pour voir si tout marche :
[code:1]PS > monEcho \"totot\"
totot[/code:1]
Pour mettre son résultat dans une variable :
[code:1]PS C:\Documents and Settings\noel> $p=monecho \"tutu tata\"
PS C:\Documents and Settings\noel> $p
tata tutu[/code:1]
On peut même juste taper \"mone\" puis tab et le mot \"monecho\" s'écrit tout seul.
J'apprenais lentement juste avec l'aide des get-help. Mais avec un livre (celui là est en français) en une semaine j'ai mieux compris le pipeline et l'importance du \"|GM\" et du \".gettype()\" et plein d'autres choses.
Avec la V2, il y a les fonctions avancées ( powershell-scripting.com/index.php?optio...id=327&Itemid=73 ) avec le \"CmdletBinding\", des presque cmdlet écrites en PS (comme celles de codeplex par exemple qui permettent de gérer des machines virtuelles). Pour moi, ce sera pour quand j'aurais un peu plus de de \"bouteille\".
Cordialement
Message édité par: noel, à: 19/08/10 23:53<br><br>Message édité par: noel, à: 20/08/10 00:21
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.037 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- include de fonction