Question Start-Job avec plusieurs functions
- usopp
- Auteur du sujet
- Hors Ligne
- Membre junior
-
- Messages : 34
- Remerciements reçus 0
j'ai la Function Create qui va lancer une 40ene de fonctions.
Les valeurs retournées seront passés en paramètre de la function Object
[code:1]Function Create {
([Parameter(Mandatory=$true)][string]$ServerName)
...
}[/code:1]
[code:1]Function Object {
([Parameter(Mandatory=$true)][string]$ServerName,
[Boolean]$isServerOnline,
[string]$IP,
[string]$DNS)
...
}[/code:1]
c'est du séquentielle serveur par serveur il va créer un object par serveur
je voulais faire un start-job par serveur pour gagner du temps mais j'y arrive pâs..
j'ai essayé de faire
[code:1]$Function = { Function Create {
([Parameter(Mandatory=$true)][string]$ServerName)
...
}}
Start-Job -initializationScript $Function -scriptblock {param($ServerName) Create $ServerName} -ArgumentList $ServerName[/code:1]
mais cela me dit que mes 40 autres fonctions are not recognized as the name of a cmdlet..
qui aurait une solution ?
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
- Messages : 6311
- Remerciements reçus 68
usopp écrit:
Pas comprisj'ai la Function Create qui va lancer une 40ene de fonctions.
usopp écrit:
Le code du job,-Scripblock, doit contenir toutes les déclarations, en créant un module tu faciliteras le code et sa maintenance.mais cela me dit que mes 40 autres fonctions are not recognized as the name of a cmdlet..
En revanche de passer par un job nécessite d'en limiter le nombre et de gérer les fin de job existant.
On t'a trouvé une autre galère
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- usopp
- Auteur du sujet
- Hors Ligne
- Membre junior
-
- Messages : 34
- Remerciements reçus 0
pour créer l'object mm je sais pas comment mieux expliquer
[code:1]Function Create {
([Parameter(Mandatory=$true)][string]$ServerName)
$isServerOnline = isServerOnline -ServerName $ServerName
$IP= get-IP -ServerName $ServerName
$DNS= get-DNS -ServerName $ServerName
etc..
Object $ServerName $isServerOnline $IP $DNS etc..
}
Function Object {
([Parameter(Mandatory=$true)][string]$ServerName,
[Boolean]$isServerOnline,
[string]$IP,
[string]$DNS)
...
}[/code:1]
et vu que je dois recup pleins d'infos sur +300 serveurs pour gagner du temps je voulais faire un start-job pour chaques serveurs et créer une collection avec le recieve-job
c'est plus ou moins le meme sujet
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
- Messages : 6311
- Remerciements reçus 68
On comprend mieux avec les bon motsj'ai ma function create qui call plusieurs fonction
usopp écrit:
Sache que tu te lances dans un traitement 'avancé'.c'est plus ou moins le meme sujet
qie j'essaye d'arranger au mieux..
En gérant des job il faut éviter de faire un générateur de tâche : de support en prod, de séance de debug, de réécriture de code.
Il est impératif d'utiliser un mécanisme de log, sinon c'est impossible à debugger et a tester ( même si la v5 permet le debug de JOB ces pb demeurent.
Le principe, tu places tous tes prérequis : module (permet des variable et fonctions privés), DLL, fonctions, scripts, variables dans un script d'initialisation.
Dans le code de ton Start-Job, tu codes l'appel de cette initialisation, puis celle de ton traitement qui disposera ainsi de tout ce dont il a besoin.
Tu peux aussi consulter cet exemple .
Soit tu crées ton moteur de job, soit tu testes ceux que l'on peut trouver sur le WEB, mais là aussi il faut du temps pour les étudier et savoir les corriger en cas de bug.
Une fois que tu as réalisé un tel traitement, compris le fonctionnement des mécanismes mis en œuvre et ce que cela implique, tu peux le réutiliser ( les 300 serveurs ne risquent pas de disparaître ).
Mais si tu n'a pas le temps de faire les choses, ne te lances pas là dedans !
Tu gagneras du temps et garderas des relations cordiales avec tes collègues
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- usopp
- Auteur du sujet
- Hors Ligne
- Membre junior
-
- Messages : 34
- Remerciements reçus 0
dans mon cas je pense que faire du start-job sur le script est plus simple que le faire sur mes functions
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
- Messages : 6311
- Remerciements reçus 68
Une partie en moins au cas où tu te décides à utiliser cette solution de log.oula
oue c'est beaucoup de boulot..
usopp écrit:
Imagine un job comme un PC indépendant, tu dois y installer chaque éléments, ton script ET tes fonctions.dans mon cas je pense que faire du start-job sur le script est plus simple que le faire sur mes functions
Il te faut déjà réfléchir au comment organiser tes fichiers. Pour l'instant c'est une question de 'rangement'.
Utilises-tu le dotsource et/ou des modules ?
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les initiés
- Start-Job avec plusieurs functions