Bonjour à tous,

J'ai un souci avec un script powershell que j'ai écrit qui se connecte à un serveur sql server va faire une requête dans la BDD et je dois ressortir un csv tout beau de tout ça.

J'ai écrit le script et ça marche sauf pour deux choses :

- D'une part si je change le -delimiter (comme fait dans le code ci-dessous) il me met une jolie erreur Export-Csv : Impossible de trouver un paramètre correspondant au nom "delimiter" et que je mette un espace ou non entre le ";" et le -delimiter j'ai toujours un message d'erreur... Ce csv va être intégré ensuite dans une application qui attend des ";" en séparation de champs. Donc je ne peux pas me contenter des "," simple par défaut.
- D'autre part lorsque j'ouvre mon fichier la première ligne est : "#TYPE System.Data.DataRow" existe-il un moyen de supprimer cette ligne simplement sans avoir à aller lire le fichier et supprimer la première ligne avec du code ?

Ci dessous le code qui ne fonctionne pas :

Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
$SQLServer = "XXXXXXXXX" #use Server\Instance for named SQL instances!
$SQLDBName = "XXXXXX"
$extractFile = "D:\structure\toto.csv"
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlConnection.ConnectionString = "Server = $SQLServer; Database = $SQLDBName; 
User ID= USER; Password= PWD"
$SqlQuery = "SELECT     dbo.AEJ.EJLIB, dbo.AETB.E0COD, dbo.AETB.E0LIB, dbo.AETB.E0ADR1, dbo.AETB.E0ADR2, dbo.AETB.E0TEL, dbo.AETB.E0FAX, dbo.AETB.E0MAIL, 
                      dbo.AETB.E0FINESS, dbo.AETB.E0SIRET, dbo.ACR.CRCOD, dbo.ACR.CRLIB, dbo.ACR.CRADR1, dbo.ACR.CRADR2, dbo.ACA.CACOD, dbo.ACA.CALIB, dbo.ACA.CAADR1, 
                      dbo.ACA.CAADR2, dbo.ALETBUD.LETITRE, dbo.ALETBUD.LELIB, dbo.ALETBUD.LECODB, dbo.AUF.UFCOD, dbo.AUF.UFLIB, dbo.AUF.UFADR1, dbo.AUF.UFTEL, 
                      dbo.c_v_agruf_pole.rgcode, dbo.c_v_agruf_pole.rglib, dbo.ATYPSEJ.TYCOD
FROM         dbo.AEJ INNER JOIN
                      dbo.AETB ON AETB.EJCLEUNIK = AEJ.EJCLEUNIK INNER JOIN
                      dbo.ACR ON ACR.E0CLEUNIK = AETB.E0CLEUNIK INNER JOIN
                      dbo.ACA ON ACA.CRCLEUNIK = ACR.CRCLEUNIK INNER JOIN
                      dbo.AUF ON AUF.CACLEUNIK = ACA.CACLEUNIK INNER JOIN
                      dbo.ALETBUD ON ALETBUD.LETITRE = ACR.LETITRE LEFT OUTER JOIN
                      dbo.ATYPSEJ ON ATYPSEJ.TYCLEUNIK = auf.tycleunik LEFT OUTER JOIN
                      dbo.c_v_agruf_pole ON C_V_AGRUF_POLE.UFCLEUNIK = AUF.UFCLEUNIK
WHERE     (1 = 1) AND (COALESCE (ACR.CRDATFERMDEF, '20781231') > '20130724') AND (COALESCE (ACA.CADATFERMDEF, '20781231') > '20130724') AND 
                      (COALESCE (AUF.UFDATFERMDEF, '20781231') > '20130724')
ORDER BY AEJ.EJLIB, AETB.E0COD, ACR.CRCOD, ACA.CACOD, AUF.UFCOD"
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand
$SqlCmd.CommandText = $SqlQuery
$SqlCmd.Connection = $SqlConnection
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$SqlAdapter.SelectCommand = $SqlCmd 
$DataSet = New-Object System.Data.DataSet
$SqlAdapter.Fill($DataSet)
$SqlConnection.Close()
 
$DataSet.Tables[0] | Export-Csv -path $extractFile -delimiter ";"