{"id":1928,"date":"2026-09-29T15:56:54","date_gmt":"2026-09-29T13:56:54","guid":{"rendered":"https:\/\/procyb.fr\/?p=1928"},"modified":"2026-09-29T15:56:55","modified_gmt":"2026-09-29T13:56:55","slug":"powershell-analyser-taille-dossiers","status":"publish","type":"post","link":"https:\/\/procyb.fr\/index.php\/2026\/09\/29\/powershell-analyser-taille-dossiers\/","title":{"rendered":"PowerShell : analyser la taille des dossiers d&rsquo;un serveur de fichiers"},"content":{"rendered":"\n<div class=\"wp-block-group is-layout-constrained wp-block-group-is-layout-constrained\">\n<p class=\"wp-block-paragraph\">Lorsqu&rsquo;un serveur de fichiers commence \u00e0 manquer d&rsquo;espace disque, il peut \u00eatre difficile d&rsquo;identifier rapidement les r\u00e9pertoires responsables de cette consommation.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">PowerShell permet d&rsquo;automatiser cette analyse et d&rsquo;obtenir en quelques commandes la taille des diff\u00e9rents dossiers pr\u00e9sents sur un partage ou un volume.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dans ce tutoriel, nous allons construire progressivement un script capable d&rsquo;analyser la taille des dossiers, de convertir les r\u00e9sultats en gigaoctets, de les trier et de les exporter dans un fichier CSV.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Objectif du tutoriel<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u00c0 la fin de ce tutoriel, vous disposerez d&rsquo;un script PowerShell permettant de :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>parcourir automatiquement les dossiers d&rsquo;un emplacement ;<\/li>\n\n\n\n<li>calculer leur taille totale ;<\/li>\n\n\n\n<li>afficher leur taille en Go ;<\/li>\n\n\n\n<li>classer les dossiers du plus volumineux au plus petit ;<\/li>\n\n\n\n<li>exporter les r\u00e9sultats dans un fichier CSV ;<\/li>\n\n\n\n<li>identifier rapidement les r\u00e9pertoires n\u00e9cessitant une analyse ou un nettoyage.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Pr\u00e9requis<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Ce tutoriel n\u00e9cessite :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Windows 10, Windows 11 ou Windows Server ;<\/li>\n\n\n\n<li>Windows PowerShell 5.1 ou PowerShell 7 ;<\/li>\n\n\n\n<li>des droits de lecture sur les dossiers analys\u00e9s ;<\/li>\n\n\n\n<li>quelques notions de base sur PowerShell.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Pour analyser un serveur de fichiers distant, le compte ex\u00e9cutant le script doit \u00e9galement disposer des droits n\u00e9cessaires sur le partage concern\u00e9.<\/p>\n\n\n\n<div class=\"wp-block-group procyb-warning has-border-background-color has-background is-layout-constrained wp-container-core-group-is-layout-6006c3f8 wp-block-group-is-layout-constrained\" style=\"border-top-left-radius:8px;border-top-right-radius:8px;border-bottom-left-radius:8px;border-bottom-right-radius:8px;border-left-color:#e08b15;border-left-width:4px;margin-top:24px;margin-bottom:24px;padding-top:20px;padding-right:20px;padding-bottom:20px;padding-left:20px\">\n<p class=\"wp-block-paragraph\">\u26a0\ufe0f <strong>Attention<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">L&rsquo;analyse d&rsquo;une arborescence contenant plusieurs centaines de milliers de fichiers peut prendre du temps et g\u00e9n\u00e9rer de nombreuses op\u00e9rations de lecture. Il est pr\u00e9f\u00e9rable d&rsquo;effectuer les premiers tests sur un r\u00e9pertoire limit\u00e9 avant d&rsquo;analyser un serveur de fichiers complet.<\/p>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>1. D\u00e9finir le dossier \u00e0 analyser<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Commen\u00e7ons par indiquer \u00e0 PowerShell l&#8217;emplacement contenant les dossiers que nous souhaitons analyser.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dans cet exemple, nous utiliserons le dossier <code>D:\\Partages<\/code>. Le chemin est enregistr\u00e9 dans une variable afin de pouvoir le modifier facilement par la suite.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$Chemin = \"D:\\Partages\"\n\nGet-ChildItem -Path $Chemin -Directory<\/code><\/pre>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\">La variable $Chemin contient le chemin du r\u00e9pertoire \u00e0 analyser. La commande <code>Get-ChildItem<\/code> permet ensuite d&rsquo;afficher son contenu.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Le param\u00e8tre <code>-Path<\/code> indique l&#8217;emplacement \u00e0 parcourir, tandis que <code>-Directory<\/code> limite le r\u00e9sultat aux dossiers. Les fichiers pr\u00e9sents directement dans <code>D:\\Partages<\/code> ne sont donc pas affich\u00e9s.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Analyser un partage r\u00e9seau<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Le m\u00eame principe peut \u00eatre utilis\u00e9 avec un partage r\u00e9seau en utilisant son chemin UNC :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$Chemin = \"\\\\SRV-FICHIERS\\Partages\"\n\nGet-ChildItem -Path $Chemin -Directory<\/code><\/pre>\n\n\n\n<div class=\"wp-block-group procyb-retain has-border-background-color has-background is-layout-constrained wp-container-core-group-is-layout-6006c3f8 wp-block-group-is-layout-constrained\" style=\"border-top-left-radius:8px;border-top-right-radius:8px;border-bottom-left-radius:8px;border-bottom-right-radius:8px;border-left-color:var(--wp--preset--color--main-2);border-left-width:4px;margin-top:24px;margin-bottom:24px;padding-top:20px;padding-right:20px;padding-bottom:20px;padding-left:20px\">\n<p class=\"wp-block-paragraph\"><strong>\ud83d\udca1 \u00c0 retenir<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Utiliser une variable pour stocker le chemin \u00e9vite de modifier plusieurs lignes du script. Il suffira ensuite de changer la valeur de $Chemin pour analyser un autre emplacement.<\/p>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>2. Calculer la taille d&rsquo;un dossier<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><code>Get-ChildItem<\/code> nous permet maintenant d&rsquo;identifier les dossiers pr\u00e9sents dans l&#8217;emplacement \u00e0 analyser. L&rsquo;\u00e9tape suivante consiste \u00e0 parcourir leur contenu afin de calculer l&rsquo;espace r\u00e9ellement occup\u00e9 par leurs fichiers.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pour comprendre le fonctionnement du script, commen\u00e7ons par calculer la taille d&rsquo;un seul dossier.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Parcourir r\u00e9cursivement le contenu<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Le param\u00e8tre <code>-Recurse<\/code> de <code>Get-ChildItem<\/code> permet de parcourir un dossier ainsi que l&rsquo;ensemble de ses sous-dossiers.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$Dossier = \"D:\\Partages\\Utilisateur1\"\n\nGet-ChildItem -Path $Dossier -File -Recurse<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Dans cette commande :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>-Path $Dossier<\/code> indique le dossier \u00e0 analyser ;<\/li>\n\n\n\n<li><code>-File<\/code> limite les r\u00e9sultats aux fichiers ;<\/li>\n\n\n\n<li><code>-Recurse<\/code> parcourt \u00e9galement tous les sous-dossiers.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">PowerShell retourne ainsi la liste de tous les fichiers contenus dans l&rsquo;arborescence.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Calculer la taille totale<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Chaque fichier retourn\u00e9 par <code>Get-ChildItem<\/code> poss\u00e8de une propri\u00e9t\u00e9 <code>Length<\/code> contenant sa taille en octets. Nous pouvons utiliser <code>Measure-Object<\/code> pour additionner toutes ces valeurs.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$Dossier = \"D:\\Partages\\Utilisateur1\"\n\n$Taille = Get-ChildItem -Path $Dossier -File -Recurse |\n    Measure-Object -Property Length -Sum\n\n$Taille.Sum<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">L&rsquo;op\u00e9rateur <code>|<\/code>, appel\u00e9 <strong>pipeline<\/strong>, transmet les fichiers trouv\u00e9s par <code>Get-ChildItem<\/code> \u00e0 <code>Measure-Object<\/code>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>Measure-Object -Property Length -Sum<\/code> additionne ensuite la propri\u00e9t\u00e9 <code>Length<\/code> de chaque fichier. Le r\u00e9sultat est disponible dans <code>$Taille.Sum<\/code>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Afficher la taille en Go<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Le r\u00e9sultat obtenu est exprim\u00e9 en octets, ce qui n&rsquo;est pas tr\u00e8s pratique pour un administrateur. PowerShell permet directement de convertir cette valeur en gigaoctets.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$TailleGo = &#91;math]::Round($Taille.Sum \/ 1GB, 2)\n\n$TailleGo<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">La valeur <code>$Taille.Sum<\/code> est divis\u00e9e par <code>1GB<\/code>, une constante reconnue nativement par PowerShell. <code>[math]::Round(..., 2)<\/code> arrondit ensuite le r\u00e9sultat \u00e0 deux d\u00e9cimales. Par exemple, une taille de plusieurs milliards d&rsquo;octets pourra ainsi \u00eatre affich\u00e9e simplement sous la forme : 12,47<\/p>\n\n\n\n<div class=\"wp-block-group procyb-retain is-layout-constrained wp-block-group-is-layout-constrained\">\n<p class=\"wp-block-paragraph\">\ud83d\udca1 <strong>\u00c0 retenir<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>Get-ChildItem<\/code> r\u00e9cup\u00e8re les fichiers, <code>-Recurse<\/code> parcourt toute l&rsquo;arborescence et <code>Measure-Object<\/code> permet d&rsquo;additionner leur propri\u00e9t\u00e9 <code>Length<\/code>. La division par <code>1GB<\/code> permet ensuite d&rsquo;obtenir une valeur directement exploitable en gigaoctets.<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-group procyb-info is-layout-constrained wp-block-group-is-layout-constrained\">\n<p class=\"wp-block-paragraph\">\u2139\ufe0f <strong>Information<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">L&rsquo;analyse peut afficher des erreurs si le compte utilis\u00e9 ne poss\u00e8de pas les droits de lecture sur certains dossiers. Nous ajouterons plus loin une gestion des erreurs afin que le script puisse poursuivre son ex\u00e9cution sans \u00eatre interrompu.<\/p>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>3. Analyser automatiquement tous les dossiers<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Jusqu&rsquo;\u00e0 pr\u00e9sent, nous avons calcul\u00e9 la taille d&rsquo;un seul dossier. Sur un serveur de fichiers, cette m\u00e9thode deviendrait rapidement fastidieuse s&rsquo;il fallait modifier manuellement le chemin pour chaque r\u00e9pertoire.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nous allons donc demander \u00e0 PowerShell de r\u00e9cup\u00e9rer automatiquement tous les dossiers pr\u00e9sents dans notre emplacement de d\u00e9part, puis d&rsquo;effectuer le calcul pour chacun d&rsquo;entre eux.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Parcourir chaque dossier<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Nous pouvons reprendre la variable $Chemin d\u00e9finie pr\u00e9c\u00e9demment et transmettre les dossiers trouv\u00e9s \u00e0 <code>ForEach-Object<\/code>.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$Chemin = \"D:\\Partages\"\n\nGet-ChildItem -Path $Chemin -Directory | ForEach-Object {\n\n    Write-Host \"Analyse de $($_.FullName)\"\n\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><code>Get-ChildItem -Directory<\/code> r\u00e9cup\u00e8re les dossiers situ\u00e9s directement dans <code>D:\\Partages<\/code>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Le pipeline <code>|<\/code> transmet ensuite chaque dossier \u00e0 <code>ForEach-Object<\/code>. \u00c0 l&rsquo;int\u00e9rieur de ce bloc, la variable automatique <code>$_<\/code> repr\u00e9sente le dossier actuellement trait\u00e9.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La propri\u00e9t\u00e9 <code>FullName<\/code> permet de r\u00e9cup\u00e9rer son chemin complet.<\/p>\n\n\n\n<div class=\"wp-block-group procyb-info is-layout-constrained wp-block-group-is-layout-constrained\">\n<p class=\"wp-block-paragraph\">\u2139\ufe0f <strong>Information<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u00c0 ce stade, <code>-Recurse<\/code> n&rsquo;est volontairement pas utilis\u00e9 sur la premi\u00e8re commande. Nous voulons mesurer les dossiers situ\u00e9s directement sous <code>D:\\Partages<\/code>. C&rsquo;est leur contenu qui sera ensuite parcouru r\u00e9cursivement.<\/p>\n<\/div>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Calculer la taille pendant le parcours<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Nous pouvons maintenant int\u00e9grer le calcul pr\u00e9c\u00e9dent dans la boucle :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$Chemin = \"D:\\Partages\"\n\nGet-ChildItem -Path $Chemin -Directory | ForEach-Object {\n\n    $Taille = Get-ChildItem -Path $_.FullName -File -Recurse |\n        Measure-Object -Property Length -Sum\n\n    $TailleGo = &#91;math]::Round($Taille.Sum \/ 1GB, 2)\n\n    Write-Host \"$($_.Name) : $TailleGo Go\"\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Pour chaque dossier trouv\u00e9, PowerShell :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>parcourt tous ses fichiers et sous-dossiers ;<\/li>\n\n\n\n<li>additionne la taille des fichiers ;<\/li>\n\n\n\n<li>convertit le r\u00e9sultat en gigaoctets ;<\/li>\n\n\n\n<li>affiche le nom du dossier et sa taille totale.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Avec une arborescence contenant par exemple <code>Comptabilite<\/code>, <code>Direction<\/code> et <code>RH<\/code>, le r\u00e9sultat pourrait ressembler \u00e0 :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Comptabilite : 18,42 Go\nDirection    : 7,81 Go\nRH           : 24,16 Go<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Cr\u00e9er un objet PowerShell pour chaque r\u00e9sultat<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><code>Write-Host<\/code> convient pour v\u00e9rifier le fonctionnement du script, mais son r\u00e9sultat est peu exploitable. Pour pouvoir trier, filtrer ou exporter les donn\u00e9es, il est pr\u00e9f\u00e9rable de cr\u00e9er de v\u00e9ritables objets PowerShell.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$Chemin = \"D:\\Partages\"\n\n$Resultats = Get-ChildItem -Path $Chemin -Directory | ForEach-Object {\n\n    $Taille = Get-ChildItem -Path $_.FullName -File -Recurse |\n        Measure-Object -Property Length -Sum\n\n    &#91;PSCustomObject]@{\n        Dossier    = $_.Name\n        Chemin     = $_.FullName\n        TailleGo   = &#91;math]::Round($Taille.Sum \/ 1GB, 2)\n    }\n}\n\n$Resultats<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><code>[PSCustomObject]<\/code> cr\u00e9e pour chaque dossier un objet contenant trois propri\u00e9t\u00e9s :<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Dossier<\/strong> : le nom du r\u00e9pertoire analys\u00e9 ;<br><strong>Chemin<\/strong> : son chemin complet ;<br><strong>TailleGo<\/strong> : l&rsquo;espace occup\u00e9, arrondi \u00e0 deux d\u00e9cimales.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Tous ces objets sont stock\u00e9s dans la variable $Resultats.<\/p>\n\n\n\n<div class=\"wp-block-group procyb-goodpractice is-layout-constrained wp-block-group-is-layout-constrained\">\n<p class=\"wp-block-paragraph\">\u2705 <strong>Bonne pratique<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Privil\u00e9giez la cr\u00e9ation d&rsquo;objets PowerShell \u00e0 <code>Write-Host<\/code> lorsque les r\u00e9sultats doivent \u00eatre r\u00e9utilis\u00e9s. Les objets peuvent ensuite \u00eatre facilement tri\u00e9s, filtr\u00e9s, export\u00e9s ou transmis \u00e0 d&rsquo;autres commandes.<\/p>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>4. Trier les dossiers du plus volumineux au plus petit<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Notre variable $Resultats contient maintenant le nom, le chemin et la taille de chaque dossier. Pour identifier imm\u00e9diatement les r\u00e9pertoires consommant le plus d&rsquo;espace disque, nous pouvons trier ces objets avec <code>Sort-Object<\/code>.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$Resultats | Sort-Object -Property TailleGo -Descending<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><code>Sort-Object<\/code> permet de classer les objets PowerShell selon une propri\u00e9t\u00e9.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ici :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>-Property TailleGo<\/code> indique que le classement doit \u00eatre effectu\u00e9 selon la taille ;<\/li>\n\n\n\n<li><code>-Descending<\/code> demande un classement d\u00e9croissant, du dossier le plus volumineux au plus petit.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Conserver le classement<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Pour pouvoir r\u00e9utiliser le classement dans la suite du script, nous pouvons enregistrer le r\u00e9sultat dans une nouvelle variable.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ResultatsTries = $Resultats |\n    Sort-Object -Property TailleGo -Descending\n\n$ResultatsTries<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>Dossier        Chemin                         TailleGo\n-------        ------                         --------\nRH             D:\\Partages\\RH                    24,16\nComptabilite   D:\\Partages\\Comptabilite          18,42\nDirection      D:\\Partages\\Direction              7,81<\/code><\/pre>\n\n\n\n<div class=\"wp-block-group procyb-retain is-layout-constrained wp-block-group-is-layout-constrained\">\n<p class=\"wp-block-paragraph\">\ud83d\udca1 <strong>\u00c0 retenir<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Le tri est r\u00e9alis\u00e9 sur la propri\u00e9t\u00e9 num\u00e9rique <code>TailleGo<\/code> et non sur le texte affich\u00e9. PowerShell peut donc correctement comparer les diff\u00e9rentes tailles.<\/p>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>5. Exporter le rapport au format CSV<\/strong><\/h2>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">L&rsquo;affichage dans la console est pratique pour une v\u00e9rification rapide, mais un administrateur peut avoir besoin de conserver les r\u00e9sultats, de les transmettre ou de les exploiter dans Excel.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">PowerShell permet d&rsquo;exporter directement les objets contenus dans $ResultatsTries avec <code>Export-Csv<\/code>.<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-code\"><code>$FichierCSV = \"C:\\Temp\\Analyse-Dossiers.csv\"\n\n$ResultatsTries | Export-Csv `\n    -Path $FichierCSV `\n    -NoTypeInformation `\n    -Encoding UTF8<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Dans cette commande :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>$FichierCSV d\u00e9finit l&#8217;emplacement du rapport ;<\/li>\n\n\n\n<li><code>Export-Csv<\/code> transforme les objets PowerShell en donn\u00e9es CSV ;<\/li>\n\n\n\n<li><code>-Path<\/code> indique le fichier \u00e0 cr\u00e9er ;<\/li>\n\n\n\n<li><code>-NoTypeInformation<\/code> \u00e9vite l&rsquo;ajout d&rsquo;informations de type inutiles ;<\/li>\n\n\n\n<li><code>-Encoding UTF8<\/code> utilise l&rsquo;encodage UTF-8 pour le fichier g\u00e9n\u00e9r\u00e9.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Adapter le fichier CSV aux param\u00e8tres r\u00e9gionaux<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">La commande pr\u00e9c\u00e9dente g\u00e9n\u00e8re un fichier CSV parfaitement exploitable. Cependant, le s\u00e9parateur utilis\u00e9 par d\u00e9faut par <code>Export-Csv<\/code> n&rsquo;est pas toujours celui attendu par les applications install\u00e9es sur le poste.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dans un environnement Windows configur\u00e9 en fran\u00e7ais, Excel utilise g\u00e9n\u00e9ralement le <strong>point-virgule (<code>;<\/code>)<\/strong> comme s\u00e9parateur de champs. Pour \u00e9viter d&rsquo;avoir \u00e0 pr\u00e9ciser manuellement ce s\u00e9parateur dans le script, PowerShell propose le param\u00e8tre <code>-UseCulture<\/code>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nous pouvons donc compl\u00e9ter notre commande d&rsquo;export :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ResultatsTries | Export-Csv `\n    -Path $FichierCSV `\n    -NoTypeInformation `\n    -Encoding UTF8 `\n    -UseCulture<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Le param\u00e8tre <code>-UseCulture<\/code> demande \u00e0 PowerShell d&rsquo;utiliser le s\u00e9parateur correspondant aux <strong>param\u00e8tres r\u00e9gionaux du syst\u00e8me<\/strong>. Le script s&rsquo;adapte ainsi automatiquement \u00e0 la configuration du poste sur lequel il est ex\u00e9cut\u00e9.<\/p>\n\n\n\n<div class=\"wp-block-group procyb-info is-layout-constrained wp-block-group-is-layout-constrained\">\n<p class=\"wp-block-paragraph\">\u2139\ufe0f <strong>Information<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Sur un syst\u00e8me Windows configur\u00e9 en fran\u00e7ais, le s\u00e9parateur de liste est g\u00e9n\u00e9ralement le point-virgule (<code>;<\/code>). Avec <code>-UseCulture<\/code>, le fichier CSV sera donc plus facilement exploitable dans Excel sans avoir \u00e0 modifier manuellement le s\u00e9parateur.<\/p>\n<\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Exemple de fichier g\u00e9n\u00e9r\u00e9<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>\"Dossier\";\"Chemin\";\"TailleGo\"\n\"RH\";\"D:\\Partages\\RH\";\"24,16\"\n\"Comptabilite\";\"D:\\Partages\\Comptabilite\";\"18,42\"\n\"Direction\";\"D:\\Partages\\Direction\";\"7,81\"<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>6. V\u00e9rifier la cr\u00e9ation du rapport<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Nous pouvons terminer cette partie en affichant le chemin du rapport une fois l&rsquo;export termin\u00e9.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Write-Host \"Rapport g\u00e9n\u00e9r\u00e9 : $FichierCSV\"<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">Rapport g\u00e9n\u00e9r\u00e9 : C:\\Temp\\Analyse-Dossiers.csv<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">7. G\u00e9rer les erreurs et les droits d&rsquo;acc\u00e8s<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Notre script fonctionne dans des conditions normales, mais plusieurs situations peuvent provoquer des erreurs lors de son ex\u00e9cution.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Sur un serveur de fichiers, certains r\u00e9pertoires peuvent notamment \u00eatre prot\u00e9g\u00e9s par des permissions NTFS sp\u00e9cifiques. Le dossier utilis\u00e9 pour enregistrer le rapport peut \u00e9galement ne pas encore exister.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nous allons donc am\u00e9liorer le script afin qu&rsquo;il puisse g\u00e9rer ces situations sans interrompre inutilement son ex\u00e9cution.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Cr\u00e9er automatiquement le dossier de destination<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Dans notre exemple, le rapport doit \u00eatre enregistr\u00e9 dans <code>C:\\Temp<\/code>. Si ce dossier n&rsquo;existe pas, <code>Export-Csv<\/code> ne pourra pas cr\u00e9er le fichier.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nous pouvons v\u00e9rifier son existence avec <code>Test-Path<\/code> et le cr\u00e9er automatiquement si n\u00e9cessaire.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$DossierRapport = \"C:\\Temp\"\n\nif (-not (Test-Path -Path $DossierRapport)) {\n    New-Item -Path $DossierRapport -ItemType Directory\n}\n\n$FichierCSV = Join-Path $DossierRapport \"Analyse-Dossiers.csv\"<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><code>Test-Path<\/code> v\u00e9rifie si <code>C:\\Temp<\/code> existe.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">L&rsquo;op\u00e9rateur <code>-not<\/code> inverse le r\u00e9sultat du test. Le bloc <code>if<\/code> est donc ex\u00e9cut\u00e9 uniquement lorsque le dossier n&rsquo;existe pas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>New-Item -ItemType Directory<\/code> cr\u00e9e alors le r\u00e9pertoire.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Enfin, <code>Join-Path<\/code> construit proprement le chemin complet du fichier CSV \u00e0 partir du dossier de destination et du nom du rapport.<\/p>\n\n\n\n<div class=\"wp-block-group procyb-goodpractice is-layout-constrained wp-block-group-is-layout-constrained\">\n<p class=\"wp-block-paragraph\">\u2705 <strong>Bonne pratique<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Utiliser <code>Join-Path<\/code> est pr\u00e9f\u00e9rable \u00e0 la concat\u00e9nation manuelle des cha\u00eenes de caract\u00e8res pour construire des chemins. Le code est plus lisible et \u00e9vite certains probl\u00e8mes li\u00e9s aux s\u00e9parateurs de r\u00e9pertoires.<\/p>\n<\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Traiter les erreurs d&rsquo;acc\u00e8s<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Lors du parcours r\u00e9cursif d&rsquo;un serveur de fichiers, PowerShell peut rencontrer un dossier sur lequel le compte ex\u00e9cutant le script ne poss\u00e8de pas les droits de lecture n\u00e9cessaires.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Plut\u00f4t que de simplement masquer ces erreurs, nous allons utiliser <code>try<\/code> et <code>catch<\/code> afin de les traiter explicitement.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>try {\n    $Taille = Get-ChildItem -Path $_.FullName -File -Recurse -ErrorAction Stop |\n        Measure-Object -Property Length -Sum\n\n    $TailleGo = &#91;math]::Round($Taille.Sum \/ 1GB, 2)\n}\ncatch {\n    Write-Warning \"Impossible d'analyser : $($_.Exception.Message)\"\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Par d\u00e9faut, toutes les erreurs PowerShell ne provoquent pas n\u00e9cessairement l&rsquo;ex\u00e9cution du bloc <code>catch<\/code>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Le param\u00e8tre <code>-ErrorAction Stop<\/code> demande ici \u00e0 PowerShell de transformer l&rsquo;erreur rencontr\u00e9e en erreur bloquante pour la commande. Elle peut alors \u00eatre intercept\u00e9e par <code>catch<\/code>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Le script peut ensuite d\u00e9cider de la mani\u00e8re dont cette erreur doit \u00eatre trait\u00e9e.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Conserver une trace des dossiers en erreur<\/strong><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>try {\n    $Taille = Get-ChildItem -Path $_.FullName -File -Recurse -ErrorAction Stop |\n        Measure-Object -Property Length -Sum\n\n    &#91;PSCustomObject]@{\n        Dossier  = $_.Name\n        Chemin   = $_.FullName\n        TailleGo = &#91;math]::Round($Taille.Sum \/ 1GB, 2)\n        Statut   = \"OK\"\n    }\n}\ncatch {\n    &#91;PSCustomObject]@{\n        Dossier  = $_.Name\n        Chemin   = $_.FullName\n        TailleGo = $null\n        Statut = \"Analyse incompl\u00e8te - acc\u00e8s refus\u00e9\"\n    }\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Nous ajoutons ici une nouvelle propri\u00e9t\u00e9 <code>Statut<\/code>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Lorsqu&rsquo;un dossier est correctement analys\u00e9, sa valeur est <code>OK<\/code>. En cas d&rsquo;erreur, le dossier reste pr\u00e9sent dans les r\u00e9sultats, mais sa taille est laiss\u00e9e vide et son statut devient <code><code>Analyse incompl\u00e8te - acc\u00e8s refus\u00e9<\/code><\/code>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Cette m\u00e9thode \u00e9vite qu&rsquo;un dossier inaccessible disparaisse silencieusement du rapport.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">Dossier TailleGo Statut<br>RH 24,16 OK<br>Comptabilite 18,42 OK<br>Direction Erreur d'acc\u00e8s<\/pre>\n\n\n\n<div class=\"wp-block-group procyb-warning is-layout-constrained wp-block-group-is-layout-constrained\">\n<p class=\"wp-block-paragraph\">\u26a0\ufe0f <strong>Attention<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Une erreur d&rsquo;acc\u00e8s ne signifie pas n\u00e9cessairement que le script doit \u00eatre ex\u00e9cut\u00e9 avec un compte administrateur. Il est pr\u00e9f\u00e9rable d&rsquo;accorder uniquement les droits de lecture n\u00e9cessaires au compte utilis\u00e9 pour l&rsquo;analyse, conform\u00e9ment au principe du moindre privil\u00e8ge.<\/p>\n<\/div>\n\n\n\n<h3 class=\"wp-block-heading\">V\u00e9rifier le chemin \u00e0 analyser<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Avant de lancer l&rsquo;analyse, il est \u00e9galement pr\u00e9f\u00e9rable de v\u00e9rifier que le chemin d\u00e9fini dans $Chemin existe r\u00e9ellement.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>if (-not (Test-Path -Path $Chemin -PathType Container)) {\n    Write-Error \"Le chemin \u00e0 analyser n'existe pas : $Chemin\"\n    exit 1\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><code>Test-Path<\/code> v\u00e9rifie ici que le chemin existe et qu&rsquo;il correspond bien \u00e0 un dossier gr\u00e2ce \u00e0 <code>-PathType Container<\/code>. Si ce n&rsquo;est pas le cas, <code>Write-Error<\/code> affiche un message explicite et <code>exit 1<\/code> arr\u00eate le script.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">8. Le script PowerShell complet<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Nous pouvons maintenant regrouper les diff\u00e9rentes \u00e9tapes pr\u00e9c\u00e9dentes dans un script unique.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Cette version analyse tous les dossiers situ\u00e9s directement dans un emplacement donn\u00e9, calcule leur taille, g\u00e8re les erreurs d&rsquo;acc\u00e8s, trie les r\u00e9sultats du plus volumineux au plus petit et g\u00e9n\u00e8re automatiquement un rapport CSV.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># ============================================================\n# Analyse de la taille des dossiers\n# ============================================================\n\n# Emplacement \u00e0 analyser\n$Chemin = \"D:\\Partages\"\n\n# Emplacement du rapport\n$DossierRapport = \"C:\\Temp\"\n\n# V\u00e9rification du chemin \u00e0 analyser\nif (-not (Test-Path -Path $Chemin -PathType Container)) {\n    Write-Error \"Le chemin \u00e0 analyser n'existe pas : $Chemin\"\n    exit 1\n}\n\n# Cr\u00e9ation du dossier de destination si n\u00e9cessaire\nif (-not (Test-Path -Path $DossierRapport)) {\n    New-Item -Path $DossierRapport -ItemType Directory | Out-Null\n}\n\n# Construction du chemin du fichier CSV\n$FichierCSV = Join-Path $DossierRapport \"Analyse-Dossiers.csv\"\n\n# Analyse des dossiers\n$Resultats = Get-ChildItem -Path $Chemin -Directory | ForEach-Object {\n\n    $Dossier = $_\n\n    try {\n        $Taille = Get-ChildItem -Path $Dossier.FullName `\n            -File `\n            -Recurse `\n            -ErrorAction Stop |\n            Measure-Object -Property Length -Sum\n\n        &#91;PSCustomObject]@{\n            Dossier  = $Dossier.Name\n            Chemin   = $Dossier.FullName\n            TailleGo = &#91;math]::Round($Taille.Sum \/ 1GB, 2)\n            Statut   = \"OK\"\n        }\n    }\n    catch {\n        &#91;PSCustomObject]@{\n            Dossier  = $Dossier.Name\n            Chemin   = $Dossier.FullName\n            TailleGo = $null\n            Statut   = \"Analyse incompl\u00e8te - acc\u00e8s refus\u00e9\"\n        }\n    }\n}\n\n# Tri du plus volumineux au plus petit\n$ResultatsTries = $Resultats |\n    Sort-Object -Property TailleGo -Descending\n\n# Affichage dans la console\n$ResultatsTries | Format-Table -AutoSize\n\n# Export du rapport\n$ResultatsTries | Export-Csv `\n    -Path $FichierCSV `\n    -NoTypeInformation `\n    -Encoding UTF8 `\n    -UseCulture\n\nWrite-Host \"\"\nWrite-Host \"Analyse termin\u00e9e.\"\nWrite-Host \"Rapport g\u00e9n\u00e9r\u00e9 : $FichierCSV\"<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Une petite am\u00e9lioration de lisibilit\u00e9<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Dans les exemples pr\u00e9c\u00e9dents, nous utilisions directement <code>$_<\/code> pour repr\u00e9senter le dossier en cours de traitement.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dans la version finale, celui-ci est enregistr\u00e9 dans la variable $Dossier :<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>$Dossier = $_<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nous pouvons ensuite utiliser <code>$Dossier.Name<\/code> et <code>$Dossier.FullName<\/code>. Cette \u00e9criture rend le script plus facile \u00e0 lire et \u00e9vite \u00e9galement toute ambigu\u00eft\u00e9 lorsque d&rsquo;autres blocs PowerShell, comme <code>catch<\/code>, utilisent leurs propres variables automatiques.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Adapter le script \u00e0 votre environnement<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Dans la plupart des cas, seules deux variables doivent \u00eatre modifi\u00e9es.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$Chemin = \"\\\\SRV-FICHIERS\\Partages\"\n$DossierRapport = \"C:\\Temp\"<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">$Chemin peut contenir un chemin local ou un chemin UNC vers un partage r\u00e9seau.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">$DossierRapport d\u00e9finit l&#8217;emplacement dans lequel le fichier CSV sera enregistr\u00e9.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Exemple de r\u00e9sultat<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Apr\u00e8s ex\u00e9cution, les r\u00e9sultats sont affich\u00e9s dans la console et enregistr\u00e9s dans le rapport CSV. Par exemple :<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-center\" data-align=\"center\">Dossier<\/th><th class=\"has-text-align-center\" data-align=\"center\">Chemin<\/th><th class=\"has-text-align-center\" data-align=\"center\">Taille (Go)<\/th><th class=\"has-text-align-center\" data-align=\"center\">Statut<\/th><\/tr><\/thead><tbody><tr><td class=\"has-text-align-center\" data-align=\"center\">RH<\/td><td class=\"has-text-align-center\" data-align=\"center\">D:\\Partages\\RH<\/td><td class=\"has-text-align-center\" data-align=\"center\">24,16<\/td><td class=\"has-text-align-center\" data-align=\"center\">OK<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">Comptabilite<\/td><td class=\"has-text-align-center\" data-align=\"center\">D:\\Partages\\Comptabilite<\/td><td class=\"has-text-align-center\" data-align=\"center\">18,42<\/td><td class=\"has-text-align-center\" data-align=\"center\">OK<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">Direction<\/td><td class=\"has-text-align-center\" data-align=\"center\">D:\\Partages\\Direction<\/td><td class=\"has-text-align-center\" data-align=\"center\">7,81<\/td><td class=\"has-text-align-center\" data-align=\"center\">OK<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">Archives<\/td><td class=\"has-text-align-center\" data-align=\"center\">D:\\Partages\\Archives<\/td><td class=\"has-text-align-center\" data-align=\"center\">\u2014<\/td><td class=\"has-text-align-center\" data-align=\"center\">Analyse incompl\u00e8te &#8211; acc\u00e8s refus\u00e9<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<div class=\"wp-block-group procyb-goodpractice is-layout-constrained wp-block-group-is-layout-constrained\">\n<p class=\"wp-block-paragraph\">\u2705 <strong>Bonne pratique<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Testez toujours le script sur une arborescence limit\u00e9e avant de l&rsquo;ex\u00e9cuter sur l&rsquo;ensemble d&rsquo;un serveur de fichiers. Sur un volume contenant plusieurs centaines de milliers ou millions de fichiers, l&rsquo;analyse r\u00e9cursive peut \u00eatre longue et g\u00e9n\u00e9rer une charge importante sur le stockage.<\/p>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Cette premi\u00e8re version fournit d\u00e9j\u00e0 un outil utilisable pour analyser ponctuellement l&rsquo;occupation d&rsquo;un serveur de fichiers.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">PowerShell permet cependant d&rsquo;aller plus loin : ajout de la date d&rsquo;analyse dans le nom du rapport, journalisation des erreurs, comparaison de plusieurs analyses, d\u00e9tection des dossiers ayant fortement augment\u00e9 ou encore g\u00e9n\u00e9ration d&rsquo;un rapport HTML.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ces \u00e9volutions feront l&rsquo;objet de prochains tutoriels consacr\u00e9s \u00e0 l&rsquo;automatisation de l&rsquo;administration syst\u00e8me.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Apprenez \u00e0 analyser automatiquement la taille des dossiers d&rsquo;un serveur de fichiers avec PowerShell, \u00e0 identifier les r\u00e9pertoires les plus volumineux et \u00e0 exporter les r\u00e9sultats dans un rapport CSV. <span class=\"more-tag mt-15 is-style-arrow\"><a class=\"more-link wp-block-button__link\" href=\"https:\/\/procyb.fr\/index.php\/2026\/09\/29\/powershell-analyser-taille-dossiers\/\">...<span class=\"screen-reader-text\"> \"PowerShell : analyser la taille des dossiers d&rsquo;un serveur de fichiers\"<\/span><\/a><\/span><!-- .more-tag --><\/p>\n","protected":false},"author":2,"featured_media":1956,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"jetpack_seo_schema_type":"","_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[63,64],"tags":[],"class_list":["post-1928","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-automatisation","category-powershell"],"jetpack_publicize_connections":[],"jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"jetpack_featured_media_url":"https:\/\/i0.wp.com\/procyb.fr\/wp-content\/uploads\/2026\/09\/Image-ChatGPT-29-sept.-2026-15_28_49.png?fit=1672%2C941&ssl=1","_links":{"self":[{"href":"https:\/\/procyb.fr\/index.php\/wp-json\/wp\/v2\/posts\/1928","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/procyb.fr\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/procyb.fr\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/procyb.fr\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/procyb.fr\/index.php\/wp-json\/wp\/v2\/comments?post=1928"}],"version-history":[{"count":27,"href":"https:\/\/procyb.fr\/index.php\/wp-json\/wp\/v2\/posts\/1928\/revisions"}],"predecessor-version":[{"id":1962,"href":"https:\/\/procyb.fr\/index.php\/wp-json\/wp\/v2\/posts\/1928\/revisions\/1962"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/procyb.fr\/index.php\/wp-json\/wp\/v2\/media\/1956"}],"wp:attachment":[{"href":"https:\/\/procyb.fr\/index.php\/wp-json\/wp\/v2\/media?parent=1928"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/procyb.fr\/index.php\/wp-json\/wp\/v2\/categories?post=1928"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/procyb.fr\/index.php\/wp-json\/wp\/v2\/tags?post=1928"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}