Le blog technique

Toutes les astuces #tech des collaborateurs de PI Services.

#openblogPI

Retrouvez les articles à la une

Powershell – Exemple de transfert de données vers un système Unix

 

A la suite de la récupération d’un dataset issu d’une requête a une base sql on veut exporter et transférer les données vers un système Unix.

Comme indiqué dans le code, a la suite de la validation du fait que le résultat de la requête contienne des données (RequestSQL OK),  on converti le dataset en csv vers un fichier local ($FullLocalFile):

($DataSet.Tables[0] | convertto-csv -Delimiter « ; » -NoTypeInformation)  | Out-File -FilePath $FullLocalFile

Puis on récupère le contenu du fichier pour ensuite le convertir au format UTF8 (au passage on écrase le fichier d’origine):

$content=get-content $FullLocalFile
Set-Content -value $content -Encoding UTF8 -Path $FullLocalFile –Force

Enfin on envoi en ftp le fichier vers le système Unix (en construisant dynamiquement le fichier de commande):

N.B: Il est possible que le mode de transfert (ascii ou binary) ait une influence sur le résultat du transfert. N’hésitez pas a tester les deux cas.

#construction fichier ftpcommands
New-Item -Path « $LocalDirectory\ftpcommands.txt » -ItemType file -Force -value `
« open monserverunix
user1
password
ascii
cd /monappli/data
lcd $LocalDirectory
mput $FileName
Y
bye »

#Envoi FTP et verification
ftp.exe -s:$LocalDirectory\ftpcommands.txt > « $LocalDirectory\resultatftp.txt »

(…)

#suppression du fichier ftpcommands
Remove-Item -Path « $LocalDirectory\ftpcommands.txt »
Remove-Item -Path « $LocalDirectory\resultatftp.txt »

 

$LocalDirectory=« D:\Data«  $FileName=« data.csv«  $FullLocalFile=« $LocalDirectory\$FileName«  (…) #Si le dataset est vide => Echec de la requête => $RequestSuccess=$false If (($DataSet.Tables[0] | MeasureObject).count -eq « 0« ) { $RequestSuccess=$false writehost ForegroundColor blue « Dataset vide – FIN DU SCRIPT«  Exit } Else { $RequestSuccess=$true writehost ForegroundColor green « RequestSQL OK«  #Export du fichier CSV en local ($DataSet.Tables[0] | converttocsv Delimiter « ;«  NoTypeInformation) | Out-File FilePath $FullLocalFile #Recuperation du contenu et conversion en UTF8 pour compatibilité Unix $content=getcontent $FullLocalFile SetContent value $content Encoding UTF8 Path $FullLocalFile Force } #construction fichier ftpcommands NewItem Path « $LocalDirectory\ftpcommands.txt«  ItemType file Force value ` « open monserverunix user1 password ascii cd /monappli/data lcd $LocalDirectory mput $FileName Y bye«  #Envoi FTP et verification ftp.exe s:$LocalDirectory\ftpcommands.txt > « $LocalDirectory\resultatftp.txt«  (…) #suppression du fichier ftpcommands RemoveItem Path « $LocalDirectory\ftpcommands.txt«  RemoveItem Path « $LocalDirectory\resultatftp.txt« 

Powershell – Script – Suppression création de compteur de performance

 

Il peut être nécessaire dans le cas d’un script insérant des données de performance de supprimer/recréer l’objet de performance

L’exemple ci-dessous montre la suppression ré-création d’un objet MyObject et d’un compteur de performance Mycounter1.

On vérifie l’existence de l’objet de performance via wmi et l’objet .net [Diagnostics.PerformanceCounterCategory]

On supprime MyObject

On recrée l’objet et son compteur  via Diagnostics.CounterCreationDataCollection et Diagnostics.CounterCreationData

On soumet la création de l’objet “global” via [Diagnostics.PerformanceCounterCategory]

Le compteur peut a partir de là être alimenté et interrogé.

 

if((GetWmiObject Query « Select * from Win32_perfformatteddata_MyObject_MyObject« ).MyCounter1 -eq 0 ` -OR (GetWmiObject Query « Select * from Win32_perfformatteddata_MyObject_MyObject« ).MyCounter1 -eq $null ` -AND [Diagnostics.PerformanceCounterCategory]::Exists(“MyObject”)) { writehost « Suppression et re-creation de l’objet de performance MyObject«  #Suppression [Diagnostics.PerformanceCounterCategory]::Delete(“MyObject”); #Creation de l’objet de perf $script:cntrColl = NewObject Diagnostics.CounterCreationDataCollection; WriteHost « Add counter 1« ; $counter = NewObject Diagnostics.CounterCreationData; $counter.CounterName = « Mycounter1« ; $counter.CounterHelp = « Help for Counter_1« ; $counter.CounterType = [Diagnostics.PerformanceCounterType]::NumberOfItems64; $script:cntrColl.Add($counter); #Ajout du compteur WriteHost « Ajout du compteur a PerfMon« ; [Diagnostics.PerformanceCounterCategory]::Create(“MyObject”, “My counter”, $script:cntrColl); }

SCOM – Mise a jour de MP Author en SP3

 

L’outil gratuit de création de management pack de Silect Software a été mis  a jour en SP3

http://www.silect.com/mp-author 

Au menu:

– Amélioration de la visualisation et de l’édition des KB

– Amélioration de l’edition du XML

– Détection des oublis de champs DisplayName

– Possibilité d’utiliser les “Bases classes” a la place de LocalApplication en tant que cible d’une nouvelle classe.

– Affichage d’objets supplémentaires issus des MP

-  Ajout d’une liste dynamique de variable pour la customisation des messages d’alertes.

– Amélioration de la gestion de la mémoire utilisée.