17/11/2024

Comment créer un dossier ou plusieurs dossiers avec PowerShell ?

I. Présentation

Dans ce chapitre, nous allons apprendre à créer un dossier avec PowerShell en utilisant la commande "New-Item" ! Il s'agit de la commande native en PowerShell pour vous faire oublier la commande MS-DOS "mkdir" !

II. Créer un dossier avec PowerShell

La commande "New-Item", qui sert aussi à créer d'autres éléments tels que des fichiers, sera notre alliée pour créer un ou plusieurs dossiers. Commençons par la base : créer un dossier, en précisant son chemin de destination. Ni plus ni moins.

Voici la commande à exécuter pour créer le dossier "PowerShell" sous "C:TEMP" :

New-Item -Path "C:\TEMP\" -Name "PowerShell" -ItemType Directory
PowerShell - Créer un dossier avec New-Item

Quelques explications s'imposent :

  • -Path : chemin de destination, c'est-à-dire l'emplacement où l'on doit créer le dossier
  • -Name : le nom du dossier
  • -ItemType : le type d'élément, c'est très important de préciser "Directory" car sinon c'est un fichier sans extension qui sera créé !

Avec cette syntaxe, nous distinguons bien le chemin d'un côté et le nom du dossier d'autre part.

Toutefois, nous pouvons faire plus court en intégrant le nom du dossier directement dans le chemin. Personnellement, je vous recommande plutôt d'utiliser le modèle ci-dessus.

New-Item -Path "C:\TEMP\PowerShell" -ItemType Directory

Si vous souhaitez créer un dossier dans l'emplacement courant, il n'est pas utile de saisir le chemin du répertoire actuel. En fait, il suffit d'utiliser cette syntaxe :

New-Item -Name "PowerShell" -ItemType Directory

Si nous ne précisons pas de valeur pour le paramètre "-Path", le répertoire actuel (vis-à-vis du prompt PowerShell) sera utilisé.

D'autres syntaxes possibles :

New-Item -Path . -Name "PowerShell" -ItemType Directory
New-Item -Path ".\PowerShell" -ItemType Directory

Voilà, vous êtes désormais capable de créer un dossier avec PowerShell !

III. Créer plusieurs dossiers avec PowerShell

Parfois, nous avons besoin de créer plusieurs dossiers, voire même une arborescence de dossiers avec un dossier parent et des sous-dossiers. Nous pourrions enchaîner plusieurs commandes New-Item (une par dossier) pour atteindre notre objectif, mais nous allons voir que nous pouvons faire plus simple pour optimiser notre code !

A. Créer plusieurs dossiers au même endroit avec PowerShell

Plutôt que de saisir plusieurs fois la commande New-Item, nous pouvons spécifier tous les chemins et noms des répertoires à créer au niveau du paramètre "-Path". Pour créer les répertoires "PowerShell1", "PowerShell2" et "PowerShell3" à la racine de "C:\TEMP", cela donne :

New-Item -Path "C:\TEMP\PowerShell1","C:\TEMP\PowerShell2","C:\TEMP\PowerShell3" -Itemtype Directory

Bien sûr, nous pourrions créer trois dossiers dans des emplacements différents...

Prenons un autre exemple : créer une liste de dossiers en s'appuyant sur les données d'un fichier CSV. Ici, un fichier CSV avec un seul en-tête nommé "Username". L'objectif est simple : créer un dossier par utilisateur, en prenant la valeur de "Username" comme nom de dossier, au sein de "C:\TEMP\PowerShell".

Voici le contenu du fichier "Username.csv" :

Username
Florian
Théo
Adrien
Bobby

Nous commençons par importer le fichier CSV :

$Username = Import-CSV -Path "C:\TEMP\Username.csv"

Puis, on boucle sur le contenu du fichier CSV avec "ForEach" de façon à créer un répertoire par nom d'utilisateur. Chaque ligne du fichier CSV sera traitée grâce à la lecture de la variable "$Username".

$Username | foreach { New-Item -Path "C:\TEMP\PowerShell\" -Name $_.UserName -ItemType Directory }

Ce qui donne bien le résultat attendu :

PowerShell - Créer dossier à partir CSV

Nous pourrions faire plus court au niveau de la syntaxe, en évitant de passer par une variable intermédiaire :

Import-CSV -Path "C:\TEMP\Username.csv" | foreach { New-Item -Path "C:\TEMP\PowerShell\" -Name $_.UserName -ItemType Directory }

Vous êtes capable de créer plusieurs dossiers avec PowerShell ! 

B. Créer une arborescence de dossiers avec PowerShell

Parfois, nous avons besoin de créer un dossier racine et des sous-dossiers : comment faire avec PowerShell ? C'est ce que nous allons aborder dans cette partie de ce chapitre.

Tout d'abord, il faut savoir que par défaut la commande New-Item permet de créer le chemin complet. Cela signifie que si nous voulons créer le dossier "Scripts" dans "C:\TEMP\PowerShell", mais que le répertoire "PowerShell" n'existe pas, il sera créé automatiquement ! Ainsi, nous allons créer une arborescence sans le vouloir.

New-Item -Path "C:\TEMP\PowerShell\Scripts" -ItemType Directory

L'exemple ci-dessous va permettre de créer les dossiers "Documents", "Téléchargements" et "Privé" dans le dossier racine de chaque utilisateur (à partir de la liste de noms du fichier CSV).

$Dossiers = (
   "Documents",
   "Téléchargements",
   "Privé"
)

Import-CSV -Path "C:\TEMP\Username.csv" | foreach {

   $Chemin = "C:\TEMP\PowerShell\$($_.UserName)"
   $Dossiers | Foreach { New-Item -Path $Chemin -Name $_ -ItemType Directory }
}

Nous pouvons voir que les trois dossiers sont bien créés à chaque fois :

PowerShell - Créer arborescence de dossiers

Terminons par une astuce basée sur l'utilisation de l'astérisque "*" ! Partons du principe que nous disposons d'une liste de répertoire créée suite à la lecture du fichier CSV (exemple précédent) :

Liste de dossier dans explorateur Windows

Si nous souhaitons créer un sous-dossier "Documents" dans l'ensemble des dossiers contenus à la racine de "C:\TEMP\PowerShell", comment faire ? Nous pourrions obtenir la liste des dossiers avec "Get-ChildItem" et exécuter la commande New-Item à chaque fois pour créer le dossier manquant... Mais, nous pouvons faire beaucoup plus simple :

New-Item -Path "C:\TEMP\PowerShell\*" -Name "Documents" -ItemType Directory

Ce qui donne bien le résultat attendu :

New-Item et astérisque

Le fait de positionner l'astérisque à cet endroit va permettre de créer le dossier "Documents" dans tous les sous-répertoires ! À connaître, mais à utiliser avec précaution...

IV. Conclusion

Vous êtes désormais capable de créer un ou plusieurs dossiers avec PowerShell, que ce soit à partir d'une liste statique ou même à partir du contenu d'un fichier CSV ! Il ne vous reste plus qu'à profiter de la commande "New-Item" !


livre pour apprendre PowerShell
author avatar
Florian BURNEL Co-founder of IT-Connect
Ingénieur système et réseau, cofondateur d'IT-Connect et Microsoft MVP "Cloud and Datacenter Management". Je souhaite partager mon expérience et mes découvertes au travers de mes articles. Généraliste avec une attirance particulière pour les solutions Microsoft et le scripting. Bonne lecture.
Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Envoyer par mail

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.