about_FileSystem_Provider
Nom du fournisseur
FileSystem
Lecteurs
C:
, D:
, Temp:
...
Fonctionnalités
Filter, ShouldProcess
Description courte
Fournit l'accès aux fichiers et aux répertoires.
Description détaillée
Le fournisseur PowerShell FileSystem vous permet d’obtenir, d’ajouter, de modifier, d’effacer et de supprimer des fichiers et des répertoires dans PowerShell.
Les lecteurs FileSystem sont un espace de noms hiérarchique contenant les répertoires et les fichiers de votre ordinateur. Un lecteur FileSystem peut être un lecteur logique ou physique, un répertoire ou un partage réseau mappé.
À compter de PowerShell version 7.0, un lecteur appelé TEMP:
est mappé au chemin du répertoire temporaire de l’utilisateur. PowerShell utilise la méthode .NET GetTempPath() pour déterminer l’emplacement du dossier temporaire. Sous Windows, l’emplacement est le même que $env:TEMP
. Sur les systèmes non Windows, l’emplacement est le même que $env:TMPDIR
ou /tmp
si la variable d’environnement n’est pas définie.
Le fournisseur FileSystem prend en charge les applets de commande suivantes, qui sont abordées dans cet article.
- Get-Location
- Set-Location
- Get-Item
- Get-ChildItem
- Invoke-Item
- Move-Item
- New-Item
- Remove-Item
- Get-ItemProperty
- Set-ItemProperty
- Clear-Item
- Clear-ItemProperty
- Remove-Item
- Remove-ItemProperty
- Get-Acl
- Set-Acl
- Get-AuthenticodeSignature
- Set-AuthenticodeSignature
- Add-Content
- Clear-Content
- Get-Content
- Set-Content
Types exposés par ce fournisseur
Les fichiers sont des instances de la classe System.IO.FileInfo . Les répertoires sont des instances de la classe System.IO.DirectoryInfo .
PowerShell Extended Type System ajoute des propriétés supplémentaires à ces types d’objets pour fournir des informations supplémentaires. Certaines informations sont spécifiques à la plateforme. Par exemple, les valeurs possibles de la propriété LinkType dépendent de la plateforme et du système de fichiers utilisés. Les systèmes de fichiers Linux et macOS prennent en charge HardLink
et SymLink
. Windows NTFS prend en charge HardLink
, SymLink
, Junction
et plusieurs autres valeurs pour LinkType.
Lorsque vous utilisez Get-Item
ou Get-ChildItem
pour des informations sur un élément lié, la propriété Mode contient un l
pour indiquer que l’élément est un lien. La propriété LinkType contient le type de lien.
AppExecLink
les liens sont créés lorsque vous installez une application à partir du Microsoft Store. Pour AppExecLink
les liens, Windows ne fournit pas de valeurs pour les propriétés LinkType ou LinkTarget .
Get-Item ~\AppData\Local\Microsoft\WindowsApps\winget.exe
Directory: C:\Users\user1\AppData\Local\Microsoft\WindowsApps
Mode LastWriteTime Length Name
---- ------------- ------ ----
la--- 6/8/2023 12:20 PM 0 winget.exe ->
Navigation dans les lecteurs FileSystem
Le fournisseur FileSystem expose ses magasins de données en mappant tous les lecteurs logiques de l’ordinateur en tant que lecteurs PowerShell. Pour utiliser un lecteur FileSystem , vous pouvez remplacer votre emplacement par un lecteur à l’aide du nom du lecteur suivi d’un signe deux-points (:
).
Set-Location C:
Vous pouvez également utiliser le fournisseur FileSystem à partir de n’importe quel autre lecteur PowerShell. Pour référencer un fichier ou un répertoire à partir d’un autre emplacement, utilisez le nom du lecteur (C:
, D:
, ...) dans le chemin d’accès.
Notes
PowerShell utilise des alias pour vous permettre d’utiliser les chemins d’accès du fournisseur de manière familière. Les commandes telles que dir
et ls
sont désormais des alias pour Get-ChildItem
, cd
est un alias pour Set-Location
. et pwd
est un alias pour Get-Location
.
Obtention de fichiers et de répertoires
L’applet Get-ChildItem
de commande retourne tous les fichiers et répertoires à l’emplacement actuel. Vous pouvez spécifier un autre chemin d’accès à la recherche et utiliser des paramètres intégrés pour filtrer et contrôler la profondeur de récursivité.
Get-ChildItem
Pour en savoir plus sur l’utilisation des applets de commande, consultez Get-ChildItem.
Copie de fichiers et de répertoires
L’applet Copy-Item
de commande copie les fichiers et les répertoires vers un emplacement que vous spécifiez.
Les paramètres sont disponibles pour filtrer et récurrencer, comme pour Get-ChildItem
.
La commande suivante copie tous les fichiers et répertoires sous le chemin d’accès C:\temp\
au dossier C:\Windows\Temp
.
Copy-Item -Path C:\temp\* -Destination C:\Windows\Temp -Recurse -File
Copy-Item
remplace les fichiers dans le répertoire de destination sans demander de confirmation.
Cette commande copie le a.txt
fichier du C:\a
répertoire vers le C:\a\bb
répertoire.
Copy-Item -Path C:\a\a.txt -Destination C:\a\bb\a.txt
Copie tous les répertoires et fichiers du C:\a
répertoire dans le C:\c
répertoire. Si l’un des répertoires à copier existe déjà dans le répertoire de destination, la commande échoue, sauf si vous spécifiez le paramètre Force .
Copy-Item -Path C:\a\* -Destination C:\c -Recurse
Pour plus d’informations, consultez Copy-Item.
Déplacement de fichiers et de répertoires
Cette commande déplace le c.txt
fichier du C:\a
répertoire vers le C:\a\aa
répertoire :
Move-Item -Path C:\a\c.txt -Destination C:\a\aa
Par défaut, l’applet de commande ne remplace pas un fichier existant portant le même nom. Pour forcer l’applet de commande à remplacer un fichier existant, spécifiez le paramètre Force .
Vous ne pouvez pas déplacer un répertoire lorsque ce répertoire est l’emplacement actuel. Lorsque vous utilisez Move-Item
pour déplacer le répertoire à l’emplacement actuel, vous voyez cette erreur.
C:\temp> Move-Item -Path C:\temp\ -Destination C:\Windows\Temp
Move-Item : Cannot move item because the item at 'C:\temp\' is in use.
At line:1 char:1
+ Move-Item C:\temp\ C:\temp2\
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [Move-Item], PSInvalidOperationException
+ FullyQualifiedErrorId : InvalidOperation,Microsoft.PowerShell.Commands.MoveItemCommand
Gestion du contenu des fichiers
Obtenir le contenu d’un fichier
Cette commande obtient le contenu du fichier « Test.txt » et l’affiche dans la console.
Get-Content -Path Test.txt
Vous pouvez diriger le contenu du fichier vers une autre applet de commande. Par exemple, la commande suivante lit le contenu du Test.txt
fichier, puis le fournit en tant qu’entrée dans l’applet de commande ConvertTo-Html :
Get-Content -Path Test.txt | ConvertTo-Html
Vous pouvez également récupérer le contenu d’un fichier en préfixant le chemin d’accès de son fournisseur avec le signe dollar ($
). Le chemin d’accès doit être placé dans des accolades en raison de restrictions de nommage des variables. Pour plus d’informations, consultez about_Variables.
${C:\Windows\System32\Drivers\etc\hosts}
Ajouter du contenu à un fichier
Cette commande ajoute la chaîne « test content » au Test.txt
fichier :
Add-Content -Path test.txt -Value "test content"
Le contenu existant dans le Test.txt
fichier n’est pas supprimé.
Remplacer le contenu d’un fichier
Cette commande remplace le contenu du fichier par la Test.txt
chaîne « test content » :
Set-Content -Path test.txt -Value "test content"
Il remplace le contenu de Test.txt
. Vous pouvez utiliser le paramètre Value de l’applet New-Item
de commande pour ajouter du contenu à un fichier lorsque vous le créez.
Parcourir le contenu d’un fichier en boucle
Par défaut, l’applet Get-Content
de commande utilise le caractère de fin de ligne comme délimiteur, de sorte qu’elle obtient un fichier en tant que collection de chaînes, chaque ligne étant une chaîne dans le fichier.
Vous pouvez utiliser le paramètre Délimiteur pour spécifier un autre délimiteur. Si vous choisissez pour ce paramètre les caractères qui indiquent la fin d'une section ou le début de la section suivante, vous pouvez fractionner le fichier en parties logiques.
La première commande obtient le Employees.txt
fichier et le fractionne en sections, chacune d’elles se terminant par les mots « Fin de l’enregistrement de l’employé » et l’enregistre dans la $e
variable.
La deuxième commande utilise la notation de tableau pour obtenir le premier élément de la collection dans $e
. Il utilise un index de 0, car les tableaux PowerShell sont de base zéro.
Pour plus d’informations sur l’applet Get-Content
de commande, consultez la rubrique d’aide relative à .Get-Content
Pour plus d’informations sur les tableaux, consultez about_Arrays.
$e = Get-Content c:\test\employees.txt -Delimited "End Of Employee Record"
$e[0]
Gestion des descripteurs de sécurité
Afficher la liste de contrôle d’accès d’un fichier
Cette commande retourne un objet System.Security.AccessControl.FileSecurity :
Get-Acl -Path test.txt | Format-List -Property *
Pour plus d’informations sur cet objet, dirigez la commande vers l’applet de commande Get-Member ou consultez la classe FileSecurity .
Création de fichiers et de répertoires
Créer un répertoire
Cette commande crée le logfiles
répertoire sur le C
lecteur :
New-Item -Path c:\ -Name logfiles -Type directory
PowerShell inclut également une mkdir
fonction (alias md
) qui utilise l’applet de New-Item
commande pour créer un répertoire.
Créer un fichier
Cette commande crée le log2.txt
fichier dans le C:\logfiles
répertoire, puis ajoute la chaîne « journal de test » au fichier :
New-Item -Path c:\logfiles -Name log2.txt -Type file
Créez un fichier avec du contenu
Crée un fichier appelé log2.txt
dans le C:\logfiles
répertoire et ajoute la chaîne « journal de test » au fichier.
New-Item -Path c:\logfiles -Name log2.txt -Type file -Value "test log"
Renommer des fichiers et des répertoires
Renommer un fichier
Cette commande renomme le a.txt
fichier dans le C:\a
répertoire en b.txt
:
Rename-Item -Path c:\a\a.txt -NewName b.txt
Renommer un répertoire
Cette commande renomme le C:\a\cc
répertoire en C:\a\dd
:
Rename-Item -Path c:\a\cc -NewName dd
Suppression de fichiers et de répertoires
Supprimer un fichier
Cette commande supprime le Test.txt
fichier dans le répertoire actif :
Remove-Item -Path test.txt
Supprimer des fichiers à l’aide de caractères génériques
Cette commande supprime tous les fichiers du répertoire actif qui ont l’extension de nom de .xml
fichier :
Remove-Item -Path *.xml
Démarrage d’un programme en appelant un fichier associé
Appeler un fichier
Applet de commande Get-Service pour obtenir des informations sur les services locaux et canalise les informations vers l’applet de commande Export-Csv pour stocker les informations dans le Services.csv
fichier.
Ensuite , Invoke-Item ouvre le services.csv
fichier dans le programme associé à l’extension .csv
:
Get-Service | Export-Csv -Path services.csv
Invoke-Item -Path services.csv
Obtention de fichiers et de dossiers avec des attributs spécifiés
Obtenir les fichiers système
Cette commande obtient les fichiers système du répertoire actif et de ses sous-répertoires.
Il utilise le paramètre File pour obtenir uniquement des fichiers (et non des répertoires) et le paramètre System pour obtenir uniquement les éléments avec l’attribut « system ».
Il utilise le paramètre Recurse pour obtenir les éléments dans le répertoire actif et tous les sous-répertoires.
Get-ChildItem -File -System -Recurse
Obtenir des fichiers masqués
Cette commande obtient tous les fichiers du répertoire actif, y compris les fichiers cachés.
Il utilise le paramètre Attributes avec deux valeurs , !Directory+Hidden
qui obtient les fichiers masqués et !Directory
, qui obtient tous les autres fichiers.
Get-ChildItem -Attributes !Directory,!Directory+Hidden
dir -att !d,!d+h
est l’équivalent de cette commande.
Obtenir des fichiers compressés et chiffrés
Cette commande obtient les fichiers du répertoire actif qui sont compressés ou chiffrés.
Il utilise le paramètre Attributes avec deux valeurs, Compressed
et Encrypted
. Les valeurs sont séparées par une virgule ,
qui représente l’opérateur « OR ».
Get-ChildItem -Attributes Compressed,Encrypted
Paramètres dynamiques
Les paramètres dynamiques sont des paramètres d’applet de commande qui sont ajoutés par un fournisseur PowerShell et sont disponibles uniquement lorsque l’applet de commande est utilisée dans le lecteur avec le fournisseur.
Encodage <>
Spécifie l'encodage du fichier. La valeur par défaut est ASCII.
ascii
: utilise l’encodage pour le jeu de caractères ASCII (7 bits).bigendianunicode
: encode au format UTF-16 à l’aide de l’ordre d’octets big-endian.bigendianutf32
: encode au format UTF-32 à l’aide de l’ordre d’octet big-endian.oem
: utilise l’encodage par défaut pour les programmes MS-DOS et console.unicode
: encode au format UTF-16 à l’aide de l’ordre d’octets little endian.utf7
: encode au format UTF-7.utf8
: encode au format UTF-8.utf8BOM
: encode au format UTF-8 avec marque d’ordre d’octet (BOM)utf8NoBOM
: encode au format UTF-8 sans marque d’ordre d’octet (BOM)utf32
: encode au format UTF-32.
Applets de commande prises en charge
Add-Content
Get-Content
Set-Content
Chaîne de délimiteur <>
Spécifie le délimiteur qui Get-Content
utilise pour diviser le fichier en objets pendant la lecture.
La valeur par défaut est \n
, caractère de fin de ligne.
Lors de la lecture d’un fichier texte, Get-Content
retourne une collection d’objets de chaîne, chacun se terminant par le caractère délimiteur.
En entrant un délimiteur qui n’existe pas dans le fichier, Get-Content
retourne l’ensemble du fichier sous la forme d’un objet unique et non délimité.
Vous pouvez utiliser ce paramètre pour fractionner un fichier volumineux en fichiers plus petits, en spécifiant un séparateur de fichier comme « Fin de l'exemple » comme délimiteur. Le délimiteur est conservé (il n'est pas supprimé) et devient le dernier élément de chaque section du fichier.
Notes
Actuellement, lorsque la valeur du paramètre Delimiter est une chaîne vide, Get-Content
ne retourne rien. Il s'agit d'un problème connu. Pour forcer Get-Content
le retour du fichier entier sous la forme d’une chaîne unique et non délimitée, entrez une valeur qui n’existe pas dans le fichier.
Applets de commande prises en charge
Get-Content
Wait <SwitchParameter>
Attend que le contenu soit ajouté au fichier. Si le contenu est ajouté, il retourne le contenu ajouté. Si le contenu a changé, il retourne la totalité du fichier.
En attente, Get-Content
vérifie le fichier une fois par seconde jusqu’à ce que vous l’interrompiez, par exemple en appuyant sur Ctrl+C.
Applets de commande prises en charge
Get-Content
Attributs <FlagsExpression>
Obtient les fichiers et les dossiers avec les attributs spécifiés. Ce paramètre prend en charge tous les attributs et vous permet de spécifier des combinaisons complexes d'attributs.
Le paramètre Attributes a été introduit dans Windows PowerShell 3.0.
Le paramètre Attributes prend en charge les attributs suivants :
- Archive
- Compressed
- Appareil
- Directory
- Chiffré
- Hidden
- Normal
- NotContentIndexed
- Hors connexion
- Lecture seule
- ReparsePoint
- SparseFile
- Système
- Temporaire
Pour obtenir une description de ces attributs, consultez l’énumération FileAttributes .
Utilisez les opérateurs suivants pour combiner des attributs.
!
-PAS+
-ET,
-OU
Les espaces ne sont pas autorisés entre un opérateur et son attribut. Les espaces sont cependant autorisés devant les virgules.
Applets de commande prises en charge
Get-ChildItem
Commutateur <d’annuaireParameter>
Obtient les répertoires (dossiers).
Le paramètre Directory a été introduit dans Windows PowerShell 3.0.
Pour obtenir uniquement des répertoires, utilisez le paramètre Répertoire et omettez le paramètre File . Pour exclure des répertoires, utilisez le paramètre File et omettez le paramètre Directory ou utilisez le paramètre Attributes .
Applets de commande prises en charge
Get-ChildItem
Commutateur de <fichiersParameter>
Obtient les fichiers.
Le paramètre File a été introduit dans Windows PowerShell 3.0.
Pour obtenir uniquement des fichiers, utilisez le paramètre File et omettez le paramètre Directory . Pour exclure des fichiers, utilisez le paramètre Directory et omettez le paramètre File ou utilisez le paramètre Attributes .
Applets de commande prises en charge
Get-ChildItem
Commutateur masquéParameter <>
Obtient uniquement les fichiers et les répertoires (dossiers) cachés. Par défaut, Get-ChildItem
obtient uniquement les éléments non masqués.
Le paramètre Hidden a été introduit dans Windows PowerShell 3.0.
Pour obtenir uniquement des éléments masqués, utilisez le paramètre Hidden , ses h
alias ou ah
, ou la valeur Hidden du paramètre Attributes . Pour exclure les éléments masqués, omettez le paramètre Hidden ou utilisez le paramètre Attributes .
Applets de commande prises en charge
Get-ChildItem
ReadOnly <SwitchParameter>
Obtient uniquement les fichiers et les répertoires (dossiers) en lecture seule.
Le paramètre ReadOnly a été introduit dans Windows PowerShell 3.0.
Pour obtenir uniquement des éléments en lecture seule, utilisez le paramètre ReadOnly , son ar
alias ou la valeur ReadOnly du paramètre Attributes . Pour exclure les éléments en lecture seule, utilisez le paramètre Attributes .
Applets de commande prises en charge
Get-ChildItem
Commutateur systèmeParameter <>
Obtient uniquement les fichiers et les répertoires (dossiers) système.
Le paramètre Système a été introduit dans Windows PowerShell 3.0.
Pour obtenir uniquement des fichiers et dossiers système, utilisez le paramètre Système , son as
alias ou la valeur Système du paramètre Attributes . Pour exclure les fichiers et dossiers système, utilisez le paramètre Attributes .
Applets de commande prises en charge
Get-ChildItem
Plus récentThan <DateTime>
Retourne $True
lorsque la LastWriteTime
valeur d’un fichier est supérieure à la date spécifiée. Sinon, $False
est retourné.
Entrez un objet DateTime , tel que celui que l’applet de commande Get-Date retourne, ou une chaîne qui peut être convertie en objet DateTime , comme "August 10, 2011 2:00 PM"
.
Applets de commande prises en charge
OlderThan <DateTime>
Retourne $True
lorsque la LastWriteTime
valeur d’un fichier est inférieure à la date spécifiée. Sinon, $False
est retourné.
Entrez un objet DateTime , tel que celui que l’applet Get-Date
de commande retourne, ou une chaîne qui peut être convertie en objet DateTime , tel que "August 10, 2011 2:00 PM"
.
Applets de commande prises en charge
Test-Path
<chaîne Stream>
Gère les flux de données alternatifs. Entrez le nom du flux. Les caractères génériques sont autorisés uniquement dans Get-Item
les commandes pour et Remove-Item
dans un lecteur de système de fichiers.
Applets de commande prises en charge
Add-Content
Clear-Content
Get-Item
Get-Content
Remove-Item
Set-Content
Commutateur BrutParameter <>
Ignore les caractères de nouvelle ligne. Retourne le contenu sous la forme d'un seul élément.
Applets de commande prises en charge
Get-Content
Chaîne ItemType <>
Ce paramètre vous permet de spécifier le type d’élément à créer avec New-Item
.
Les valeurs disponibles de ce paramètre dépendent du fournisseur actuel que vous utilisez.
Dans un FileSystem
lecteur, les valeurs suivantes sont autorisées :
- Fichier
- Répertoire
- SymbolicLink
- jonction
- HardLink
Applets de commande prises en charge
New-Item
Utilisation du pipeline
Les applets de commande du fournisseur acceptent l’entrée de pipeline. Vous pouvez utiliser le pipeline pour simplifier la tâche en envoyant des données de fournisseur d’une applet de commande à une autre applet de commande de fournisseur. Pour en savoir plus sur l’utilisation du pipeline avec des applets de commande de fournisseur, consultez les références d’applet de commande fournies dans cet article.
Obtenir de l’aide
Depuis Windows PowerShell 3.0, vous pouvez obtenir des rubriques d'aide personnalisées pour les applets de commande du fournisseur, qui expliquent comment ces applets de commande se comportent dans un lecteur du système de fichiers.
Pour obtenir les rubriques d’aide personnalisées pour le lecteur de système de fichiers, exécutez une commande Get-Help dans un lecteur de système de fichiers ou utilisez le paramètre Path de pour spécifier un lecteur de système de Get-Help
fichiers.
Get-Help Get-ChildItem
Get-Help Get-ChildItem -Path c: