Question [Module] OrchestratorDatas

Plus d'informations
il y a 11 ans 4 mois #13270 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 :

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

l'information transformée :
[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 :

Paramètres : {0} : Nom du workflow
{1} : Nom du fichier d'archive

saisie par l'utilisateur au démarrage du WF

La pièce jointe OrchestratorDatas.zip est absente ou indisponible

<br><br>Message édité par: Laurent Dardenne, à: 10/12/12 20:24

Tutoriels PowerShell
Pièces jointes :

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 11 ans 4 mois #13273 par Richard Lazaro
Sympa !

Moi cela commence à faire un moment que j'ai pas pu bidouiller avec PowerShell :'(

Think-MS : (Get-Life).Days | %{ Learn-More }

\\&quot;Problems cannot be solved by the same level of thinking that created them.\\&quot; - Albert Einstein

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 11 ans 4 mois #13277 par Laurent Dardenne
Richard Lazaro écrit:

Sympa !

De rien.
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.

Plus d'informations
il y a 11 ans 4 mois #13285 par Matthew BETTON
Laurent Dardenne écrit:

Richard Lazaro écrit:

Sympa !

De rien.
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, \&quot; ici, c'est les Scripting Games tous les jours \&quot; :laugh:

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.075 secondes
Propulsé par Kunena