Dans la série PowerShell, nous nous intéressons au travail avec les fichiers dans PowerShell. Les premiers types de fichiers que nous couvrons et qui sont utilisés sont les types de fichiers CSV(comma separated values). Nous allons examiner deux cmdlets importants import-csv/export-csv qui sont largement utilisés lors du travail avec CSV.
Nous commençons par l’extension de fichier CSV, car c’est la plus basique. Nous allons utiliser l’exemple précédent, où nous avons stocké les processus en cours d’exécution dans le fichier:
#Defining file for export$exportedFile = 'C:\temp\exportedProcesses.csv'#Exporting as CSV - basicGet-Process | Export-Csv $exportedFile#Opening the filepsedit $exportedFile
Par défaut, Export-Csv écrira un fichier délimité par des virgules en utilisant l’encodage ASCII et écrasera complètement tout fichier utilisant le même nom.
Export-Csv peut être utilisé pour ajouter des lignes à un fichier existant en utilisant le paramètre Append. Lorsque le paramètre Append est utilisé, l’objet d’entrée doit avoir chacun des champs énumérés dans l’en-tête CSV ou une erreur sera lancée, à moins que le paramètre Force soit utilisé.
Après avoir exécuté cet exemple simple, vous aurez devant vous le fichier CSV ouvert, qui se compose de tous les processus et de chaque valeur, séparés par des virgules. Et c’est ce que CSV signifie en fait : valeurs séparées par des virgules. L’avantage de travailler avec des fichiers CSV est que vous obtiendrez des objets personnalisés semblables à des tableaux, qui peuvent facilement être filtrés. Ce type de fichier est judicieux, notamment pour les objets de données simples.
Export-Csv peut recevoir l’instruction d’exclure cet en-tête à l’aide du paramètre NoTypeInformation:
Get-Process | Export-Csv processes.csv -NoTypeInformation
L’importation est très simple.
#Importing CSV file$data = Import-Csv $exportedFile#Showing content$data | Out-GridView
Les fichiers CSV (Comma-Separated Values) sont du texte brut. Des applications telles que Microsoft Excel peuvent travailler avec des fichiers CSV sans modifier le format du fichier, bien que les fonctionnalités avancées dont dispose Excel ne puissent pas être enregistrées dans un fichier CSV.
Par défaut, Import-Csv s’attend à ce que l’entrée ait une ligne d’en-tête, soit délimitée par des virgules et utilise un encodage de fichier ASCII. Si l’un de ces éléments est différent, les paramètres de la commande peuvent être utilisés. Par exemple, une tabulation peut être définie comme délimiteur.
Import-Csv TabDelimitedFile.tsv -Delimiter `t
Une coche suivie d’un t (`t) est utilisée pour représenter le caractère tabulation dans PowerShell.
Les données importées à l’aide de Import-Csv seront toujours formatées sous forme de chaîne de caractères. Si Import-Csv est utilisé pour lire un fichier contenant le texte suivant, chacun des chiffres sera traité comme une chaîne.
#Showing its type$data | Get-Member # TypeName: CSV:System.Diagnostics.Process$data.GetType() # PSCustomObject$data.GetType() # System.Array
Il est intéressant de voir ici quel type est récupéré après l’importation du fichier CSV. La cmdlet Get-Member sur l’objet $data lui-même montre qu’il s’agit d’un fichier CSV, et que les objets exportés sont de type System.Diagnostics.Process. Mais, après avoir jeté un coup d’œil attentif au premier objet et au type du conteneur, vous constaterez que l’objet importé ne peut plus être utilisé comme un processus. Il est devenu un PSCustomObject. Néanmoins, il s’agit d’une amélioration par rapport à l’exportation d’une simple chaîne de caractères. Vous pouvez facilement l’importer et l’utiliser comme un simple magasin de données.
Le prochain grand avantage lorsque vous travaillez avec des fichiers CSV est que vous pouvez les rendre éditables avec Microsoft Excel. Pour cela, il vous suffit de changer le délimiteur de la virgule (,) au point-virgule ( ;), car c’est le délimiteur par défaut des fichiers Excel. Vous pouvez utiliser l’indicateur -Delimiter dédié pour cette tâche.
#Exporting as CSV with specified delimiter ';'Get-Process | Export-Csv C:\temp\exportedProcesses.csv -Delimiter ';'#Importing the data$data = Import-Csv C:\temp\exportedProcesses.csv -Delimiter ';'#Showing the data$data | Out-GridView
Faites attention cependant ici, car il s’agit d’un comportement spécifique à une culture. Pour éviter les problèmes avec les différentes cultures, vous pouvez utiliser le drapeau -UseCulture.
Maintenant, l’édition avec Excel est possible. Pour démontrer la puissance de PowerShell, nous allons maintenant ouvrir le fichier avec Excel via PowerShell et l’utilisation du ComObject d’Excel lui-même.
#Create ComObject for Excel$excel = New-Object -ComObject Excel.Application#Make it visible$excel.Visible = $true#Open the CSV file$excel.Workbooks.Open($exportedFile)
Vous pouvez essayer d’ouvrir un fichier CSV qui a été exporté avec le délimiteur virgule et point-virgule pour voir par vous-même la différence entre les deux approches.
Conclusion:
Nous avons déjà couvert une section pour comprendre le travail avec CSV. Nous avons couvert les cmdlets export-csv à tout en essayant d’exporter des fichiers en tant que CSV. Ils sont principalement utilisés lors de rapports qui peuvent être directement visualisés en utilisant excel. J’ai personnellement utilisé Export-CSV et import-CSV tout en travaillant avec la plateforme azur que nous couvrirons quelques autres jours en détail.