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

par | Mar 12, 2015 | PowerShell | 0 commentaires

 

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« 

0 commentaires

Soumettre un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *