# Chargement des assemblies wpf 
Add-Type -AssemblyName PresentationFramework,PresentationCore, 
WindowsBase 
 
#Chargement des assemblies LiveCharts 
$DllLiveCharts = 'Assembly\LiveCharts.dll' 
$DllLiveChartsWPF = 'Assembly\LiveCharts.Wpf.dll' 
 
Add-Type -Path $DllLiveCharts, $DllLiveChartsWPF 
 
#Définition du code XAML 
[xml]$xaml = @" 
<Window  
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:lvc="clr-namespace:LiveCharts.Wpf;assembly=LiveCharts.Wpf"
    Title="Taille des 3 principaux dossiers C:\" Height="400" Width="500"> 
    <Grid > 
        <lvc:CartesianChart Series="{Binding SeriesCollection}" x:Name="CartesianChart" >
            <lvc:CartesianChart.DataTooltip> 
                <lvc:DefaultTooltip Visibility="Hidden"/> 
            </lvc:CartesianChart.DataTooltip> 
            <lvc:CartesianChart.AxisX> 
                <lvc:Axis Title="Dossiers" Labels="{Binding}" FontSize="14" Foreground="Black"></lvc:Axis> 
            </lvc:CartesianChart.AxisX> 
            <lvc:CartesianChart.AxisY> 
                <lvc:Axis Title="Taille (en Go)" FontSize="14" Foreground="Black"></lvc:Axis>
            </lvc:CartesianChart.AxisY> 
        </lvc:CartesianChart> 
    </Grid> 
</Window> 
"@ 
 
$reader = New-Object System.Xml.XmlNodeReader $xaml 
$Window = [Windows.Markup.XamlReader]::Load( $reader ) 
 
#Récupération de la taille des dossiers 
$TabHashTable = 'C:\Users', 'C:\Windows', 'C:\Program Files' |  
Foreach-Object { 
    [PscustomObject]@{ 
        Path = [string]$(Split-Path -Path $_ -Leaf) 
        Size = (Get-ChildItem -Path $_ -File -Recurse | 
            Measure-Object -Property Length -Sum).Sum / 1GB 
    } 
} | Sort-Object -Property Size -Descending 
 
#Récupération de la partie graphique 
$Chart = $Window.FindName('CartesianChart') 
 
#Création de la collection de valeurs 
$ChartValues = [LiveCharts.ChartValues[int]]$TabHashTable.Size 
#Création des colonnes 
$Column = [LiveCharts.Wpf.ColumnSeries]::new() 
$Column.Title = 'Taille' 
$Column.Values = $ChartValues 
#Définition de la largeur des colonnes 
$Column.MaxColumnWidth = 100 
 
$SeriesCollection = [LiveCharts.SeriesCollection]::new() 
$SeriesCollection.Add($Column) 
 
#Ajout de la série de colonnes dans le graphique 
$Chart.Series = $SeriesCollection 
 
#Renseignement du nom des dossiers sur l'axe des abscisses  
$Chart.AxisX[0].Labels = [String[]]$TabHashTable.Path 
 
#Affichage de la fenêtre 
[void]$Window.ShowDialog()
