Je ne vais pas aborder le débat du choix entre CSV, JSON et XML, ce dernier étant déjà largement présent sur le net.
Le seul truc à retenir c’est que le JSON et le XML permettent des résultats sur plusieurs là le CSV ne peut pas.
Il faut savoir que Powershell gère nativement le JSON.
Par exemple, avec un Get-ChildItem:
Get-ChildItem C:\Temp\Test\ | ConvertTo-Json
On obtient:
[ { "Name": "Sub1", "FullName": "C:\\Temp\\Test\\Sub1", "Parent": { "Name": "Test", "FullName": "C:\\Temp\\Test", "Parent": "Temp", "Exists": true, "Root": "C:\\", "Extension": "", "CreationTime": "\/Date(1523650597878)\/", "CreationTimeUtc": "\/Date(1523650597878)\/", "LastAccessTime": "\/Date(1523650688390)\/", "LastAccessTimeUtc": "\/Date(1523650688390)\/", "LastWriteTime": "\/Date(1523650688390)\/", "LastWriteTimeUtc": "\/Date(1523650688390)\/", "Attributes": 16 }, "Exists": true, "Root": { "Name": "C:\\", "FullName": "C:\\", "Parent": null, "Exists": true, "Root": "C:\\", "Extension": "", "CreationTime": "\/Date(1446186510642)\/", "CreationTimeUtc": "\/Date(1446186510642)\/", "LastAccessTime": "\/Date(1523889482812)\/", "LastAccessTimeUtc": "\/Date(1523889482812)\/", "LastWriteTime": "\/Date(1523889482812)\/", "LastWriteTimeUtc": "\/Date(1523889482812)\/", "Attributes": 22 }, "Extension": "", "CreationTime": "\/Date(1523650667572)\/", "CreationTimeUtc": "\/Date(1523650667572)\/", "LastAccessTime": "\/Date(1523650717234)\/", "LastAccessTimeUtc": "\/Date(1523650717234)\/", "LastWriteTime": "\/Date(1523650717234)\/", "LastWriteTimeUtc": "\/Date(1523650717234)\/", "Attributes": 16, "PSPath": "Microsoft.PowerShell.Core\\FileSystem::C:\\Temp\\Test\\Sub1", "PSParentPath": "Microsoft.PowerShell.Core\\FileSystem::C:\\Temp\\Test", "PSChildName": "Sub1", "PSDrive": { "CurrentLocation": "Users\\rober", "Name": "C", "Provider": "Microsoft.PowerShell.Core\\FileSystem", "Root": "C:\\", "Description": "OS", "MaximumSize": null, "Credential": "System.Management.Automation.PSCredential", "DisplayRoot": null }, "PSProvider": { "ImplementingType": "Microsoft.PowerShell.Commands.FileSystemProvider", "HelpFile": "System.Management.Automation.dll-Help.xml", "Name": "FileSystem", "PSSnapIn": "Microsoft.PowerShell.Core", "ModuleName": "Microsoft.PowerShell.Core", "Module": null, "Description": "", "Capabilities": 52, "Home": "C:\\Users\\rober", "Drives": "C" }, "PSIsContainer": true, "Mode": "d-----", "BaseName": "Sub1", "Target": [ ], "LinkType": null }, { "Name": "Sub2", "FullName": "C:\\Temp\\Test\\Sub2", "Parent": { "Name": "Test", "FullName": "C:\\Temp\\Test", "Parent": "Temp", "Exists": true, "Root": "C:\\", "Extension": "", "CreationTime": "\/Date(1523650597878)\/", "CreationTimeUtc": "\/Date(1523650597878)\/", "LastAccessTime": "\/Date(1523650688390)\/", "LastAccessTimeUtc": "\/Date(1523650688390)\/", "LastWriteTime": "\/Date(1523650688390)\/", "LastWriteTimeUtc": "\/Date(1523650688390)\/", "Attributes": 16 }, "Exists": true, "Root": { "Name": "C:\\", "FullName": "C:\\", "Parent": null, "Exists": true, "Root": "C:\\", "Extension": "", "CreationTime": "\/Date(1446186510642)\/", "CreationTimeUtc": "\/Date(1446186510642)\/", "LastAccessTime": "\/Date(1523889482812)\/", "LastAccessTimeUtc": "\/Date(1523889482812)\/", "LastWriteTime": "\/Date(1523889482812)\/", "LastWriteTimeUtc": "\/Date(1523889482812)\/", "Attributes": 22 }, "Extension": "", "CreationTime": "\/Date(1523650675524)\/", "CreationTimeUtc": "\/Date(1523650675524)\/", "LastAccessTime": "\/Date(1523650675524)\/", "LastAccessTimeUtc": "\/Date(1523650675524)\/", "LastWriteTime": "\/Date(1523650675524)\/", "LastWriteTimeUtc": "\/Date(1523650675524)\/", "Attributes": 16, "PSPath": "Microsoft.PowerShell.Core\\FileSystem::C:\\Temp\\Test\\Sub2", "PSParentPath": "Microsoft.PowerShell.Core\\FileSystem::C:\\Temp\\Test", "PSChildName": "Sub2", "PSDrive": { "CurrentLocation": "Users\\rober", "Name": "C", "Provider": "Microsoft.PowerShell.Core\\FileSystem", "Root": "C:\\", "Description": "OS", "MaximumSize": null, "Credential": "System.Management.Automation.PSCredential", "DisplayRoot": null }, "PSProvider": { "ImplementingType": "Microsoft.PowerShell.Commands.FileSystemProvider", "HelpFile": "System.Management.Automation.dll-Help.xml", "Name": "FileSystem", "PSSnapIn": "Microsoft.PowerShell.Core", "ModuleName": "Microsoft.PowerShell.Core", "Module": null, "Description": "", "Capabilities": 52, "Home": "C:\\Users\\rober", "Drives": "C" }, "PSIsContainer": true, "Mode": "d-----", "BaseName": "Sub2", "Target": [ ], "LinkType": null }, { "Name": "Sub3", "FullName": "C:\\Temp\\Test\\Sub3", "Parent": { "Name": "Test", "FullName": "C:\\Temp\\Test", "Parent": "Temp", "Exists": true, "Root": "C:\\", "Extension": "", "CreationTime": "\/Date(1523650597878)\/", "CreationTimeUtc": "\/Date(1523650597878)\/", "LastAccessTime": "\/Date(1523650688390)\/", "LastAccessTimeUtc": "\/Date(1523650688390)\/", "LastWriteTime": "\/Date(1523650688390)\/", "LastWriteTimeUtc": "\/Date(1523650688390)\/", "Attributes": 16 }, "Exists": true, "Root": { "Name": "C:\\", "FullName": "C:\\", "Parent": null, "Exists": true, "Root": "C:\\", "Extension": "", "CreationTime": "\/Date(1446186510642)\/", "CreationTimeUtc": "\/Date(1446186510642)\/", "LastAccessTime": "\/Date(1523889482812)\/", "LastAccessTimeUtc": "\/Date(1523889482812)\/", "LastWriteTime": "\/Date(1523889482812)\/", "LastWriteTimeUtc": "\/Date(1523889482812)\/", "Attributes": 22 }, "Extension": "", "CreationTime": "\/Date(1523650685768)\/", "CreationTimeUtc": "\/Date(1523650685768)\/", "LastAccessTime": "\/Date(1523650697916)\/", "LastAccessTimeUtc": "\/Date(1523650697916)\/", "LastWriteTime": "\/Date(1523650697916)\/", "LastWriteTimeUtc": "\/Date(1523650697916)\/", "Attributes": 16, "PSPath": "Microsoft.PowerShell.Core\\FileSystem::C:\\Temp\\Test\\Sub3", "PSParentPath": "Microsoft.PowerShell.Core\\FileSystem::C:\\Temp\\Test", "PSChildName": "Sub3", "PSDrive": { "CurrentLocation": "Users\\rober", "Name": "C", "Provider": "Microsoft.PowerShell.Core\\FileSystem", "Root": "C:\\", "Description": "OS", "MaximumSize": null, "Credential": "System.Management.Automation.PSCredential", "DisplayRoot": null }, "PSProvider": { "ImplementingType": "Microsoft.PowerShell.Commands.FileSystemProvider", "HelpFile": "System.Management.Automation.dll-Help.xml", "Name": "FileSystem", "PSSnapIn": "Microsoft.PowerShell.Core", "ModuleName": "Microsoft.PowerShell.Core", "Module": null, "Description": "", "Capabilities": 52, "Home": "C:\\Users\\rober", "Drives": "C" }, "PSIsContainer": true, "Mode": "d-----", "BaseName": "Sub3", "Target": [ ], "LinkType": null } ]
Bref un bon gros pavé bien complet en JSON 😀
Et comment on l’exporte ? Comme ça !
Get-ChildItem C:\Temp\Test\ | ConvertTo-Json | Out-File .\MyFile.json -Encoding utf8 -Force
Voila, c’est tout simple !
0 commentaire