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 »

