• 6 heures
  • Moyenne

Ce cours est visible gratuitement en ligne.

course.header.alt.is_certifying

J'ai tout compris !

Mis à jour le 23/03/2023

Gérez vos fichiers avec PowerShell

Gérez vos fichiers et dossiers simplement avec PowerShell

Dans ce chapitre, nous allons voir la gestion des fichiers avec PowerShell. Vous allez bientôt connaître quelques commandes de gestion de fichiers en plus des quelques commandes que vous avez déjà pu voir tout au long des chapitres précédents.

Apprenez à vous repérer dans le système de fichiers avec PowerShell

Pour commencer, nous allons partir de PowerShell ISE et retourner dans l’invite de commandes PowerShell. Pour savoir où l’on se situe, on va utiliser la cmdlet  Get-Location  .

Essai avec la cmdlet get-location
Essai avec la cmdlet get-location

Parfait. Le résultat de la cmdlet Get-Location  confirme le prompt : nous sommes dans le dossier utilisateur.

Pour afficher le contenu d’un dossier, utilisez la commande Get-ChildItem  :

Le contenu du dossier est affiché grâce à la commande Get-ChildItem
Le contenu du dossier est affiché grâce à la commande Get-ChildItem

Vous allez créer un répertoire de Sauvegardes dans votre dossier utilisateur.

Pour cela, utilisez la cmdlet et les options suivantes :  New-Item -Name “Sauvegardes” -ItemType Directory  .

Création du répertoire de sauvegardes avec la cmdlet New-Item
Création du répertoire de sauvegardes avec la cmdlet New-Item

Si on regarde la cmdlet et ses options, nous pouvons déduire les éléments suivants :

  • -Name “Sauvegardes”  indique le nom de l’élément qui va être créé ;

  • -ItemType Directory  (ou “dossier”, en français) indique le type de l’élément qui va être créé.

Si on précise le type Directory, est-ce que ça veut dire qu’on peut créer d’autres types d’éléments avec  New-Item  ?

En effet, vous pouvez très bien décider de créer un fichier texte, par exemple. Dans ce cas, vous pouvez utiliser la cmdlet New-Item  avec le paramètre -ItemType  et la valeur  File  .

Création d'un fichier texte avec la cmdlet New-Item
Création d'un fichier texte avec la cmdlet New-Item

Tant qu’on y est, je vous propose maintenant de créer un fichier texte, et d’y inscrire du contenu. Vous pouvez pour ça utiliser le paramètre -value  suivi du texte entre guillemets.

Inscrivez votre contenu avec le paramètre -value
Inscrivez votre contenu avec le paramètre -value

Et comment être sûr que le contenu est bien écrit ? En affichant le contenu du fichier, bien sûr ! Et pour ça, vous pouvez utiliser la cmdlet Get-Content  suivie du nom du fichier.

Affichez le contenu du fichier avec Get-Content
Affichez le contenu du fichier avec Get-Content

Manipulez vos fichiers avec PowerShell

Avoir des fichiers et des dossiers créés, c’est bien, mais nous allons essayer d’aller un petit peu plus loin dans nos manipulations.

Je vous propose de commencer par sauvegarder le fichier que vous venez de créer, fichier.txt.

Pour ce faire, vous allez devoir faire appel à une nouvelle cmdlet à ajouter à votre arsenal :  Copy-Item  .

Copy-Item  est la cmdlet à connaître si vous souhaitez copier des fichiers d’un chemin source vers une destination.

Essayez de copier votre fichier dans le dossier de sauvegarde.

Copie du fichier dans le dossier de sauvegarde
Copie du fichier dans le dossier de sauvegarde

Vous remarquerez deux choses importantes :

  1. Pour visualiser le contenu du nouveau dossier, j’ai utilisé la cmdlet Get-ChildItem  avec un attribut (.\Sauvegardes\) sans m’être déplacé dans mon répertoire de destination. 

  2. Je n’ai pas utilisé de paramètres. Ceux-ci sont sous-entendus. Mais il s’agit des paramètres : 

  • -Path : le fichier que vous souhaitez copier ;

  • -Destination : le dossier qui va accueillir votre fichier.

Les paramètres -Path et -Destination
Les paramètres -Path et -Destination

Ces paramètres sont communs à presque toutes les cmdlets de gestion de fichiers.

La cmdlet Copy-Item  possède une option très utile qui s’écrit -recurse  . Elle permet de copier tous les fichiers et les dossiers/sous-dossiers d’un répertoire. C’est donc une option essentielle pour dupliquer une arborescence complète.

Bien. Disons que maintenant, vous voulez déplacer, et non plus copier, le fichier Groupes.txt.

Pour ce faire, vous pouvez utiliser non pas la cmdlet Copy-Item  , mais Move-Item  .

Déplacez votre fichier avec Move-Item
Déplacez votre fichier avec Move-Item

Je vous laisse vérifier dans le dossier source du fichier, mais vous pouvez être certain qu’avec un Move-Item  , votre fichier aura été déplacé et non pas juste copié.

Je souhaiterais faire un petit aparté rapide concernant les chemins.

La première utilisation de Get-ChildItem renvoie vers un chemin absolu La seconde utilisation de Get-ChildItem renvoie vers un chemin relatif.
Un chemin absolu et un chemin relatif

Si vous regardez bien, dans les deux cas, je fais un Get-ChildItem  . Le premier avec le nom de chemin complet, le second avec ‘ .\ ‘ devant.

La première écriture du chemin s’appelle chemin absolu. Le chemin absolu permet d’appeler le fichier directement par son adresse complète.

La seconde écriture est nommée chemin relatif. Le chemin relatif est, comme indiqué, relatif à l’endroit où l’on se situe.

Par exemple, dans notre cas, je suis positionné dans le dossier  C:\Users\stiven   comme nous le montre le prompt. Si je fais un  Get-ChildItem .\Sauvegardes\  , je vais aller dans le dossier “Sauvegardes” présent dans le chemin courant (donc C:\Users\stiven). Ce qui explique le “.” en début de chemin.

Si jamais j’étais dans C:\Users\  , j’obtiendrais une erreur, car le chemin relatif .\Sauvegardes\ n’existe pas.

Vous devez maîtriser les deux types d’écriture. Le chemin absolu, bien qu’il semble plus simple au premier abord, ne possède pas la même souplesse que le chemin relatif. Si jamais vous devez changer de dossier source dans un script, par exemple en le déployant sur un autre serveur, vous aurez plus de modifications à effectuer.

Vu que vous me semblez assidu et particulièrement doué 😀, vous allez pouvoir mettre en application l’usage d’un chemin absolu et un nouveau paramètre pour la cmdlet New-Item  : le paramètre -Path  .

Celui-ci va vous permettre de spécifier le chemin que vous souhaitez créer sans que ce soit obligatoirement dans le chemin courant. Essayez de créer un nouveau dossier Sauvegardes, mais cette fois à la racine du disque C directement.

Créez un dossier Sauvegardes à la racine du disque C
Créez un dossier Sauvegardes à la racine du disque C

Continuons notre exploration des cmdlets usuelles pour travailler sur les fichiers.

Vous avez créé un fichier nommé “fichier.txt” dans votre dossier. C’est bien, mais le nom ne vous plaît plus. Si si, je vous assure, vous ne voulez plus qu’il s’appelle comme ça.

Je vous propose d’utiliser la cmdlet   Rename-Item  pour  renommer votre fichier en Utilisateurs.txt.

La cmdlet s’utilise avec la même logique qu’un déplacement de fichier :  Rename-Item .\fichier.txt Utilisateurs.txt   .

Utilisez la cmdlet Rename-Item pour renommer un fichier
Utilisez la cmdlet Rename-Item pour renommer un fichier

Félicitations ! Vous savez désormais créer des fichiers, des dossiers, les déplacer, les renommer, les supprimer… Attendez. Non ! Vous n’avez pas encore appris à supprimer un fichier.

Je vous propose d’essayer de supprimer votre dossier de sauvegardes. Après tout, vous en avez créé un nouveau dans C:\.

La cmdlet pour supprimer un fichier ou un dossier est Remove-Item  .

Elle s’utilise avec le paramètre -Path, comme pour les autres cmdlets.

Utilisez la cmdlet Remove-Item pour supprimer un fichier ou un dossier
Utilisez la cmdlet Remove-Item pour supprimer un fichier ou un dossier

Notez que si vous essayez de supprimer un dossier avec des fichiers présents dedans, PowerShell vous demandera une confirmation. Dans votre cas, vous pouvez entrer T pour tout supprimer.

Partagez des fichiers avec PowerShell

Créez vos dossiers partagés avec PowerShell

Maintenant que vous savez créer des fichiers et des dossiers et les manipuler, vous allez pouvoir commencer à travailler sur des fonctions liées au partage.

La logique de partage de dossier avec PowerShell est la même que quand vous utilisez l’interface graphique de Windows.

Globalement, les étapes pourraient être résumées de la manière suivante :

  1. Créez un dossier classique.

  2. Créez le partage.

  3. Configurez les droits de partage. 

L’étape 1, vous l’avez déjà faite en créant votre dossier de sauvegarde. C’est celui-ci que vous allez pouvoir utiliser.

Vous allez créer votre premier partage de dossier. Pour ça, vous pouvez utiliser la cmdlet suivante, dans une invite PowerShell que vous aurez ouverte en administrateur :  New-SmbShare -Name Sauvegarde -Path C:\Sauvegardes\ -FullAccess Administrateurs   

Créez un partage de dossier
Créez un partage de dossier

Cette commande permet de partager le dossier C:\Sauvegardes (-Path) en créant un nom de partage Sauvegarde (-Name) et en donnant le contrôle total au groupe Administrateurs (-FullAccess).

Et si vous allez voir le partage avec l’explorateur de fichiers, vous verrez qu’il a bien été créé, et avec les bons droits, en plus !

Le bouton de partage est en surbrillance. Vous pouvez donc partager votre dossier.
Jetez un oeil à l'explorateur de fichiers
Dans le champ Autorisations pour Administrateurs, Contrôle total, Modifier et Lecture sont autorisés
Le groupe Administrateurs a un contrôle total

Gérez vos droits de partage avec PowerShell

Vous allez maintenant essayer de modifier les droits de partage en ajoutant les droits de lecture à tout le monde avec la cmdlet suivante :

Grant-SmbShareAccess -Name Sauvegarde -AccountName "Tout le Monde" -AccessRight Read

Pour cette cmdlet, les paramètres -Name  permettent de sélectionner sur quel partage va être effectué le changement, -AccountName  permet de sélectionner l’utilisateur ou le groupe concerné. Ici, ce sera “Tout le monde”. Enfin, le dernier paramètre, -AccessRight  , permet de définir les droits à appliquer.

Vous pouvez utiliser les valeurs suivantes pour affiner les droits à appliquer :

  • Full : contrôle total ;

  • Change : modifier ;

  • Read : lecture ;

  • Custom : personnalisé.

Cliquez sur T pour Oui pour tout. Les nouveaux droits du répertoire s’affichent.

Affichage des droits du répertoire
Affichage des droits du répertoire

Là encore, vous pouvez aller vérifier de manière graphique.

Seule la Lecture est autorisée
Les autorisations pour le groupe Tout le monde

Il n’y pas un moyen de vérifier autrement que par l’explorateur de fichier ? Genre avec une cmdlet ?

C’est exactement la logique que j’essaie de vous faire adopter : trouver une cmdlet qui corresponde à votre besoin, pour éventuellement à terme vous la faire utiliser dans un script PowerShell.

Cette cmdlet se nomme Get-SmbShareAccess  et demande comme paramètre et valeur “-Name Sauvegarde”.

L'utilisation de la cmdlet Get-SmbShareAccess renvoie des informations identiques
Utilisez la cmdlet Get-SmbShareAccess

Comme vous pouvez le voir, les informations sont identiques. Mais sans avoir eu à utiliser plusieurs fois votre souris et l’explorateur.

Avec cette cmdlet, vous avez vu les informations sur le partage. Tant qu’on y est, je vais vous montrer la cmdlet pour voir les droits de sécurité sur le dossier C:\Sauvegardes avec la cmdlet  Get-Acl -Path C:\Sauvegarde | Format-List   .

Une cmdlet pour voir les droits de sécurité sur un dossier : Get-Acl -Path C: \Sauvegarde I Format-List
Une cmdlet pour voir les droits de sécurité sur un dossier

Affichez le contenu de vos répertoires partagés avec PowerShell

Bon, c’est super, mais maintenant que j’ai créé mon répertoire partagé, qu'est-ce que j'en fais ?

Déjà, vous pouvez vérifier le contenu du répertoire partagé nommé Sauvegarde via le chemin UNC.

Le chemin UNC est un chemin réseau composé de la manière suivante :

  • \\ Indique le début du chemin UNC ;

  • Nom du PC ou serveur ;

  • suivi d’un \Nom du partage.

Par exemple, dans le cas de mon PC qui s’appelle “VM”, le chemin UNC est : \\VM\Sauvegarde.

Vérifiez le contenu de Sauvegarde avec le chemin UNC
Vérifiez le contenu de Sauvegarde avec le chemin UNC

Cela nous offre maintenant plein de possibilités. Surtout, n’hésitez pas à vous amuser à utiliser les cmdlets PowerShell, vues précédemment, de déplacement et de copie de fichiers et de dossiers, vers un répertoire partagé

En résumé

  • La commande  Get-Location  permet de savoir dans quel dossier on se situe.

  • La commande  Get-ChildItem  permet de lister le contenu d’un répertoire.

  • La commande  New-Item  permet de créer des répertoires et des fichiers textes vides ou non vides.

  • La commande  Copy-Item  permet de copier des fichiers ou des répertoires.

  • La commande  Move-Item  permet de déplacer des fichiers ou des répertoires.

  • La commande  Remove-Item  permet d’effacer des fichiers ou des répertoires.

  • La commande  Rename-Item  permet de renommer des fichiers ou des répertoires.

  • La commande  New-SmbShare  permet de créer un partage de dossier.

  • La commande  Grant-SmbShareAccess  permet d’ajouter des autorisations d’accès à des utilisateurs ou à des groupes sur un répertoire partagé.     

Maintenant que vous savez gérer des dossiers et des fichiers, et les partager, vous allez pouvoir découvrir la configuration d’Active Directory avec PowerShell.

Exemple de certificat de réussite
Exemple de certificat de réussite