Question [Module] OrchestratorDatas
- Laurent Dardenne
- Auteur du sujet
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 6302
- Remerciements reçus 68
il y a 11 ans 9 mois #13270
par Laurent Dardenne
Tutoriels PowerShell
[Module] OrchestratorDatas a été créé par Laurent Dardenne
Voici qq usages d'un module d'interrogation de la base SQL Server d'Orchestrator 2012:
Lorsque qu'un utilisateur modifie un Runbook et que celui-ci ferme le designer sans l'enregistrer, ce Runbook reste verrouillé, interdisant sa manipulation par un utilisateur différent.
Seul l'utilisateur ayant verrouillé le runbook peut le déverrouiller en l'enregistrant.
La fonction Get-OrchestratorCheckedOutRunBook permet de retrouver les policies en cours de modification :
blogs.technet.com/b/jbritt/archive/2011/...ed-out-policies.aspx
Ainsi, vous pouvez vérifier :
si vous ne laissez pas de Runbook verrouillés en fin de journée,
si un Runbook est disponible avant de le modifier ( sinon vos modifications seront perdues).
Ce module adresse directement la base SQL d'Orchestrator, il est possible d'utiliser un WebService au travers des API REST ( orchestrator.codeplex.com/releases/view/82959 ), la première version utilisait des GUID en tant que référence, ce qui n'est pas très pratique.
D'où la présence par exemple de la fonction Get-OrchestratorRunBookParameters, celle-ci permet de retrouver les identifiants des paramètres nécessaires à l'exécution d'un runbook paramètré via le WebService.
Pour ceux et celles qui souhaiteraient n'utiliser que du code Powershell, à l'aide d'activité de type 'Run .Net Script', voici un ensemble de fonction permettant d'extraire de la base le code Powershell.
[code:1]
#Récupère toutes les activités utilisant du code Powershell
Get-OrchestratorRunBook|
Get-OrchestratorRunBookActivity |
Select-Activity 'Run .Net Script'|
Write-OrchestratorNetScript -path \"C:\Temp\Test\"
[/code:1]
On récupére, de la base Orchestrator, les objets 'Run .Net Script', puis pour chaque Worflow on crée un sous-répertoire.
Chaque sous répertoire aura le même nom que celui du workflow (dans ce contexte son nom ne doit pas contenir de caractères interdit par le FileSystem) et contiendra tous les scripts associés à chaque objet 'Run .Net Script'.
Le nom du fichier de script sera identique au nom de l'activité Orchestrator traité.
Le module utilise le paramètrage par défaut de la base SQL Server Orchestrator. Si un de vos client souhaite utiliser un nommage interne, vous pouvez configurer le module ainsi :
[code:1]
$MySqlParameter=@{
Server = \"$env:ComputerName\MyInstanceName\";
Database = 'MyBaseName'
}
Set-SQLParameter $MySqlParameter
[/code:1]
Ceci permet également d'adresser deux serveurs distincts qui seraient situés sur le même réseau :
[code:1]
$Srv1=@{
Server = \"Serveur1\InstanceName\";
Database = 'BaseName'
}
$Srv2=@{
Server = \"Serveur\OtherInstanceName\";
Database = 'OtherBaseName'
}
Get-OrchestratorRunBook -SQLConfiguration $Srv1
Get-OrchestratorRunBook -SQLConfiguration $Srv2
[/code:1]
Enfin concernant les activités de type Info, Warning, Error
la function Format-OrchestratorEvent groupe et reformate les objets 'Send Platform Event' renvoyé par Get-Orchestrators.
Elle extrait les messages en remplacant dans le code source chaque GUID Orchestrator par un index d'élément de mise en forme : Guidn -> {n}
Utile si vous voulez générer uné documentation à partir de la base.
Cette fonction à une dépendance sur la function Replace-String qui n'est pas inclue dans le code du module mais livré dans l'archive.
[code:1]
Get-OrchestratorRunBook|
Get-OrchestratorRunBookActivity |
Select-Activity 'Send Platform Event' |
Add-EventDetails|
Format-OrchestratorEvent|
Export-csv \"C:\Temp\Scripts\Event.csv\" -Encoding \"Unicode\" -Delimiter \";\" -NoTypeInformation -Force
[/code:1]
L'information brute :
[code:1]
Workflow : Abracadabra
Name : Echec
Type : error
Sommaire : {0} - Echec {1}
Details : Le workflow '{0}' n' a pas réussi à effectuer le traitement sur le serveur xx.
Raisons : (à compléter par vos soins)
Correction : (à compléter par vos soins)
[/code:1]
Vous pouvez également ajouter une colonne 'Paramètres' à compléter par vos soins :
<br><br>Message édité par: Laurent Dardenne, à: 10/12/12 20:24
Lorsque qu'un utilisateur modifie un Runbook et que celui-ci ferme le designer sans l'enregistrer, ce Runbook reste verrouillé, interdisant sa manipulation par un utilisateur différent.
Seul l'utilisateur ayant verrouillé le runbook peut le déverrouiller en l'enregistrant.
La fonction Get-OrchestratorCheckedOutRunBook permet de retrouver les policies en cours de modification :
blogs.technet.com/b/jbritt/archive/2011/...ed-out-policies.aspx
Ainsi, vous pouvez vérifier :
si vous ne laissez pas de Runbook verrouillés en fin de journée,
si un Runbook est disponible avant de le modifier ( sinon vos modifications seront perdues).
Ce module adresse directement la base SQL d'Orchestrator, il est possible d'utiliser un WebService au travers des API REST ( orchestrator.codeplex.com/releases/view/82959 ), la première version utilisait des GUID en tant que référence, ce qui n'est pas très pratique.
D'où la présence par exemple de la fonction Get-OrchestratorRunBookParameters, celle-ci permet de retrouver les identifiants des paramètres nécessaires à l'exécution d'un runbook paramètré via le WebService.
Pour ceux et celles qui souhaiteraient n'utiliser que du code Powershell, à l'aide d'activité de type 'Run .Net Script', voici un ensemble de fonction permettant d'extraire de la base le code Powershell.
[code:1]
#Récupère toutes les activités utilisant du code Powershell
Get-OrchestratorRunBook|
Get-OrchestratorRunBookActivity |
Select-Activity 'Run .Net Script'|
Write-OrchestratorNetScript -path \"C:\Temp\Test\"
[/code:1]
On récupére, de la base Orchestrator, les objets 'Run .Net Script', puis pour chaque Worflow on crée un sous-répertoire.
Chaque sous répertoire aura le même nom que celui du workflow (dans ce contexte son nom ne doit pas contenir de caractères interdit par le FileSystem) et contiendra tous les scripts associés à chaque objet 'Run .Net Script'.
Le nom du fichier de script sera identique au nom de l'activité Orchestrator traité.
Le module utilise le paramètrage par défaut de la base SQL Server Orchestrator. Si un de vos client souhaite utiliser un nommage interne, vous pouvez configurer le module ainsi :
[code:1]
$MySqlParameter=@{
Server = \"$env:ComputerName\MyInstanceName\";
Database = 'MyBaseName'
}
Set-SQLParameter $MySqlParameter
[/code:1]
Ceci permet également d'adresser deux serveurs distincts qui seraient situés sur le même réseau :
[code:1]
$Srv1=@{
Server = \"Serveur1\InstanceName\";
Database = 'BaseName'
}
$Srv2=@{
Server = \"Serveur\OtherInstanceName\";
Database = 'OtherBaseName'
}
Get-OrchestratorRunBook -SQLConfiguration $Srv1
Get-OrchestratorRunBook -SQLConfiguration $Srv2
[/code:1]
Enfin concernant les activités de type Info, Warning, Error
la function Format-OrchestratorEvent groupe et reformate les objets 'Send Platform Event' renvoyé par Get-Orchestrators.
Elle extrait les messages en remplacant dans le code source chaque GUID Orchestrator par un index d'élément de mise en forme : Guidn -> {n}
Utile si vous voulez générer uné documentation à partir de la base.
Cette fonction à une dépendance sur la function Replace-String qui n'est pas inclue dans le code du module mais livré dans l'archive.
[code:1]
Get-OrchestratorRunBook|
Get-OrchestratorRunBookActivity |
Select-Activity 'Send Platform Event' |
Add-EventDetails|
Format-OrchestratorEvent|
Export-csv \"C:\Temp\Scripts\Event.csv\" -Encoding \"Unicode\" -Delimiter \";\" -NoTypeInformation -Force
[/code:1]
L'information brute :
l'information transformée :EventDetails : Le workflow '\`d.T.~Ed/{0F07C8BA-555B-4794-84CB-979D2C08A421}.Policy.Name\`d.T.~Ed/' n' a pas
réussi à effectuer le traitement sur le serveur xx.
EventSummary : \`d.T.~Ed/{0F07C8BA-555B-4794-84CB-979D2C08A421}.Policy.Name\`d.T.~Ed/ - Fail \`d.T.~Ed/{0F08
C8BA-555B-4794-84CB-979D2C08A421}.ReportName\`d.T.~Ed/
EventType : error
[code:1]
Workflow : Abracadabra
Name : Echec
Type : error
Sommaire : {0} - Echec {1}
Details : Le workflow '{0}' n' a pas réussi à effectuer le traitement sur le serveur xx.
Raisons : (à compléter par vos soins)
Correction : (à compléter par vos soins)
[/code:1]
Vous pouvez également ajouter une colonne 'Paramètres' à compléter par vos soins :
saisie par l'utilisateur au démarrage du WFParamètres : {0} : Nom du workflow
{1} : Nom du fichier d'archive
La pièce jointe OrchestratorDatas.zip est absente ou indisponible
Tutoriels PowerShell
Pièces jointes :
Connexion ou Créer un compte pour participer à la conversation.
- Richard Lazaro
- Hors Ligne
- Membre platinium
Réduire
Plus d'informations
- Messages : 530
- Remerciements reçus 0
il y a 11 ans 9 mois #13273
par Richard Lazaro
Think-MS : (Get-Life).Days | %{ Learn-More }
\\"Problems cannot be solved by the same level of thinking that created them.\\" - Albert Einstein
Réponse de Richard Lazaro sur le sujet Re:[Module] OrchestratorDatas
Sympa !
Moi cela commence à faire un moment que j'ai pas pu bidouiller avec PowerShell :'(
Moi cela commence à faire un moment que j'ai pas pu bidouiller avec PowerShell :'(
Think-MS : (Get-Life).Days | %{ Learn-More }
\\"Problems cannot be solved by the same level of thinking that created them.\\" - Albert Einstein
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Auteur du sujet
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 6302
- Remerciements reçus 68
il y a 11 ans 9 mois #13277
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:[Module] OrchestratorDatas
Richard Lazaro écrit:
Quant à pratiquer PS, une fois qu'on a de bonnes connaissances et qu'on sait les partager, c'est comme le vélo, ça ne s'oublie pas.
De rien.Sympa !
Quant à pratiquer PS, une fois qu'on a de bonnes connaissances et qu'on sait les partager, c'est comme le vélo, ça ne s'oublie pas.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Matthew BETTON
- Hors Ligne
- Membre platinium
Réduire
Plus d'informations
- Messages : 968
- Remerciements reçus 0
il y a 11 ans 9 mois #13285
par Matthew BETTON
Réponse de Matthew BETTON sur le sujet Re:[Module] OrchestratorDatas
Laurent Dardenne écrit:
Je suis aussi de cet avis.
Honnêtement, je ne développe pas des scripts PowerShell tous les jours, ça ne m'empêche pas de m'y (re)mettre avec un grand plaisirs !
Et puis, comme me l'avait rappelé Laurent il y a quelques temps, \" ici, c'est les Scripting Games tous les jours \"
Richard Lazaro écrit:
De rien.Sympa !
Quant à pratiquer PS, une fois qu'on a de bonnes connaissances et qu'on sait les partager, c'est comme le vélo, ça ne s'oublie pas.
Je suis aussi de cet avis.
Honnêtement, je ne développe pas des scripts PowerShell tous les jours, ça ne m'empêche pas de m'y (re)mettre avec un grand plaisirs !
Et puis, comme me l'avait rappelé Laurent il y a quelques temps, \" ici, c'est les Scripting Games tous les jours \"
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.107 secondes
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Contributions à la communauté
- [Module] OrchestratorDatas