Lister tous les répertoires et fichiers d'une arborescence en powershell
Référencer dans un fichier tous les répertoires et fichiers d'une arborescence de façon récursive
Au préalable vous pouvez désactiver l'arrêt du script si il rencontre une erreur, cad ici si il n'arrive pas à accéder à un répertoire
$ErrorActionPreference = "silentlycontinue" #En cas d'erreur, on ne dit rien et on continu
Lien vers le fichier : cliquez ici
Exemple basique où l'on liste tout à partir de C:\
Get-ChildItem -Path "C:\" -Recurse | %{Write-host $_.FullName}
Lien vers le fichier : cliquez ici
La même chose mais on ne liste que les fichiers, et on ne prend que ceux avec l'extension txt
Get-ChildItem -Path "C:\" -Recurse -File -include "*.txt" | %{Write-host $_.FullName}
Lien vers le fichier : cliquez ici
Voici une aide pour générer une commande de recherche
La même chose mais on écrit le résultat dans un fichier C:\ZZMonFichierensortie.txt au lieu de l'afficher
Get-ChildItem -Path "C:\" -Recurse -File -include "*.txt" | %{ADD-content -path "C:\ZZMonFichierensortie.txt" -value $_.FullName}
Lien vers le fichier : cliquez ici
Ici on écrit dans un fichier la liste des fichiers ainsi que le chemin du répertoire qui le contient
$RepertorieaTraiter = "C:\"
$varCheminRepertoireScript = [System.IO.Path]::GetDirectoryName($MyInvocation.MyCommand.Definition)
$currentScriptName = $MyInvocation.MyCommand.Name #Récupération du nom du script en cours
#On ne prend que le nom du script sans l'extention. Pour cela on chercher la position d'un point en partant de la droite et on prend tout ce qui est à sa gauche
$currentScriptName = $currentScriptName.substring(0,$($currentScriptName.lastindexofany(".")))
#Création du fichier vierge
$EmplacementFichier = "$varCheminRepertoireScript\$($currentScriptName)_Result.txt"
$MonFichier = New-Item -type file $EmplacementFichier -Force
$MesObjets = get-childitem $RepertorieaTraiter -Recurse
#get-childitem "C:\" -Recurse
foreach ($UneLigne in $MesObjets){
#$UneLigne |gm
#Write-Host "$($UneLigne.Name), $($UneLigne.FullName), $($UneLigne.PSParentPath)"
#Write-Host $UneLigne.FullName
$MyLine = "$($UneLigne.Name)`t$($UneLigne.FullName)" #`t$($UneLigne.PSParentPath)"
add-content $MonFichier $MyLine
}
Lien vers le fichier : cliquez ici
Publicité