{{tag>dev powershell}} ====== PowerShell : Charger ou importer des données ====== Les données exportées dans des fichiers textes au format brut, CSV ou JSON peuvent être relues et chargées en mémoire dans des objets accessibles par les scripts PowerShell. La cmdlet **Get-Content** permet de relire un fichier texte et d'obtenir un tableau. Chaque élément du tableau correspond à une ligne du fichier. Soit un fichier texte "fichierA.txt" avec le contenu : A01 A02 A03 A04 Pour charger le contenu du fichier "fichierA.txt" $lines = Get-Content -Path '.\fichierA.txt' # Afficher le nombre de lignes $lines.Length 4 # Accès au contenu de la première ligne $lines[0] A01 # Afficher toutes les lignes foreach ( $line in $lines ){ Write-Output "$line" } ===== Formatage CSV ===== De nombreuses applications proposent un formatage des données en CSV. La cmdlet **Import-CSV** permet de relire et d'accéder à ces données. Ci-dessous un exemple de fichier texte formaté en CSV FirstName,LastName,UserID,Department John,Doe,u001023,Sales Judith,Arrow,u025351,Sales Elon,Pusk,u145237,RD # Importe les données du fichier aUsersFile.csv $users = Import-Csv '.\aUsersFile.csv' # La variable $users référence un tableau # chaque élément du tableau correspond à un enregistrement CSV $users.Length 3 # Chaque élément du tableau est un objet ayant pour noms d'attributs # les noms des colonnes du fichier (première ligne du fichier CSV) $users[0].FirstName John Quelques options usuelles pour la cmdlet **Import-Csv** : * **-Delimiter** permet de spécifier un caractère de délimitation des champs autre que , ; * **-Header** pour spécifier les noms des attributs (colonnes) si la première ligne du fichier n'est pas le nom ===== Formatage XML ===== Le XML permet de décrire et stocker des données structurées de façon plus complexes que le CSV. La cmdlet **Import-Clixml** permet de récupérer des données à partir d'un fichier XML et produit un tableau d'objets. Les options ''-First'' et ''-Skip'' permettent de limiter l'import. $users = Import-Clixml '.\aUsersFile.xml' ===== Formatage JSON ===== Comme XML, le formatage JSON permet de représenter des données complexes cependant sa syntaxe est moins verbeuse. Il est largement utilisé. La cmdlet **ConvertFrom-Json** peut être combinée avec **Get-Content** pour lire un fichier contenant des objets JSON et obtenir en objets en mémoire : $users = Get-Content '.\aUsersFile.json' | ConvertFrom-Json