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
.
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
:
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
.
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
.
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.
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.
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.
Vous remarquerez deux choses importantes :
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.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.
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
.
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.
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.
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
.
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.
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 :
Créez un dossier classique.
Créez le partage.
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
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 !
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.
Là encore, vous pouvez aller vérifier de manière graphique.
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”.
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
.
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.
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.