{{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