« PowerShell/Fichier » : différence entre les versions
Aller à la navigation
Aller à la recherche
| (9 versions intermédiaires par le même utilisateur non affichées) | |||
| Ligne 1 : | Ligne 1 : | ||
{{Sommaire}} | {{Sommaire}} | ||
== Script de création de dossier == | |||
<source> | |||
<# | |||
Nom : PSHFICCRE010 | |||
Description : création du dossier "C:\Archive" | |||
Usage : lancement du script avec les droits d'administrateur | |||
Particularité : néant | |||
Auteur : fylip22 | |||
Version : 1.0 | |||
Révisions : | |||
- 1.0 (21/05/2024) : création du script | |||
#> | |||
$chemin = "C:\" | |||
$dossierNom = "Archive" | |||
Clear-Host | |||
If(-not(Test-Path -Path $chemin$dossierNom)) | |||
{ | |||
New-Item -ItemType Directory -Path $chemin -Name $dossierNom | |||
Write-Host "Le dossier $chemin$dossierNom vient d'être créé" -ForegroundColor Green | |||
} | |||
Else | |||
{ | |||
Write-Host "Le dossier $chemin$dossierNom existe déjà !" -ForegroundColor Red | |||
} | |||
</source> | |||
=== Version compacte === | |||
<source> | |||
<# Nom : PSHFICCRE010 ; Description : création du dossier "C:\Archive" ; Usage : lancement du script avec les droits d'administrateur ; Particularité : néant ; Auteur : fylip22 ; Version : 1.0 ; Révisions : - 1.0 (21/05/2024) : création du script #> | |||
$chemin = "C:\" ; $dossierNom = "Archive" ; Clear-Host | |||
If(-not(Test-Path -Path $chemin$dossierNom)) { New-Item -ItemType Directory -Path $chemin -Name $dossierNom ; Write-Host "Le dossier $chemin$dossierNom vient d'être créé" -ForegroundColor Green } | |||
Else { Write-Host "Le dossier $chemin$dossierNom existe déjà !" -ForegroundColor Red } | |||
</source> | |||
== Script de nettoyage de contenu de fichier == | == Script de nettoyage de contenu de fichier == | ||
| Ligne 11 : | Ligne 46 : | ||
== Script de suppression de fichier == | == Script de suppression de fichier == | ||
=== Suppression des fichiers anciens === | |||
<source> | |||
<# | |||
Description : suppression des fichiers dont la date de création est ancienne | |||
Usage : exécution du script via une tâche planifiée | |||
Auteur : PHP | |||
Version : 1.0 | |||
Révisions : | |||
- 1.0 (05/05/2023) : création du script | |||
#> | |||
$FichierAncienneteEnJour = -30 | |||
$Dossier = "C:\log" | |||
Get-ChildItem $Dossier -Recurse | Where CreationTime -lt (Get-Date).AddDays($FichierAncienneteEnJour) | Remove-Item -Force -Recurse | |||
</source> | |||
=== Exemple === | |||
<source> | <source> | ||
# Auteur : Ph. Page | # Auteur : Ph. Page | ||
| Ligne 60 : | Ligne 113 : | ||
* <source inline>Get-ChildItem -file *.* -recurse | sort Length -descending | select -first 10 | Select-Object -property Name, @{Label="Mo";Expression={"{0:N3}" -f ($_.Length / 1MB)}}</source> | * <source inline>Get-ChildItem -file *.* -recurse | sort Length -descending | select -first 10 | Select-Object -property Name, @{Label="Mo";Expression={"{0:N3}" -f ($_.Length / 1MB)}}</source> | ||
== Script de liste de dossiers, nombre de fichier et taille == | == Script de liste (fichier, dossier...) == | ||
=== Liste de dossiers, nombre de fichier et taille === | |||
Ce script génère un tableau des dossiers, nombre de fichiers et taille totale, avec tri du plus grand au plus petit. | Ce script génère un tableau des dossiers, nombre de fichiers et taille totale, avec tri du plus grand au plus petit. | ||
<source> | <source> | ||
$DossierSource = | Clear-Host | ||
$DossierSource = 'C:\Support' | |||
# Ne liste que les dossiers de premier niveau | # Ne liste que les dossiers de premier niveau | ||
| Ligne 78 : | Ligne 134 : | ||
Répertoire = $Dossier | Répertoire = $Dossier | ||
Nombre_fichier = $FichierNombre | Nombre_fichier = $FichierNombre | ||
Taille_MB = | Taille_MB = '{0:N2}' -f ($Taille/1MB) | ||
Taille_GB = | Taille_GB = '{0:N2}' -f ($Taille/1GB) | ||
Rapport_MB = | Rapport_MB = '{0:N2}' -f ($Rapport/1MB) | ||
} | } | ||
} | | } | | ||
Sort-Object Rapport_MB -Descending | | Sort-Object Rapport_MB -Descending | | ||
FT | FT | ||
#| Export-CSV - | #| Export-CSV -Path C:\support\raccourcis-liste-20230403.csv -Delimiter ";" | ||
</source> | </source> | ||
=== Liste de fichiers en fonction de l'extension, de la taille === | |||
<source> | |||
$DossierTravail = "C:\php\" | |||
#$filtre = @(".jpg",".jpeg") # filtre pour les images au format jpg | |||
$filtre = @(".mp4",".mov") # filtre pour les vidéos | |||
$tailleMinimum = "2000000" # en octet (2000000 pour 2 Mo) | |||
$ancienneteAnnee = "2023" # jusque l'année indiquée | |||
Clear-Host | |||
Set-Location $DossierTravail | |||
Write-Output "Début du traitement..." | |||
$FichierListe = Get-ChildItem -Recurse | Where-Object { ($_.Extension -in $filtre) -and ($_.Length -ge $tailleMinimum) -and ($_.CreationTime.Year -le $ancienneteAnnee) } | FT name, Length, LastWriteTime, Directory | |||
Write-Output "Fin du traitement" | |||
$FichierListe | |||
</source> | |||
== Script de suppression de fichiers temporaires sur profil itinérant == | |||
<source> | |||
$Compte = "martinp" | |||
$DossierListe = @( | |||
"C:\Users\$Compte\AppData\Local\Microsoft\Edge\User Data\Default\Cache\Cache_Data\", | |||
"C:\Users\$Compte\AppData\LocalLow\Adobe\Acrobat\DC\ConnectorIcons\" | |||
"C:\Users\$Compte\AppData\Local\Microsoft\Windows\INetCache\Content.Outlook\", | |||
"C:\Users\$Compte\AppData\Local\Microsoft\Edge\User Data\Default\Service Worker\CacheStorage\" | |||
) | |||
foreach ($Dossier in $dossierliste) { | |||
Get-ChildItem -path $Dossier -exclude "index" | |||
$FichierNombre = (Get-ChildItem -Path $Dossier -Recurse -File -include "*.pdf").count | |||
$Taille = (Get-ChildItem -Path $Dossier -Recurse -File -include "*.pdf" | Measure-Object -Property Length -Sum).Sum | |||
$TotalTaille = $TotalTaille + $Taille | |||
} | |||
$TotalTaille_MB = '{0:N2}' -f ($TotalTaille/1MB) | |||
write-host | |||
write-host "=== Bilan ===" | |||
write-host "Nombre de dossier racine :", $DossierListe | |||
write-host "Nombre de dossier racine :", $DossierListe.Count | |||
write-host "Nombre de fichiers :", $FichierNombre | |||
write-host "Taille totale (Mo) :", $TotalTaille_MB | |||
# exemples | |||
# Get-ChildItem -Path "C:\" -Recurse -File -include "*.pdf" | |||
</source> | |||
== Création de dossier == | |||
<source> | |||
Set-Location "C:\Users\phil\Pictures\Voyage au Canada\" | |||
$liste = ( | |||
"20240618-mar", | |||
"20240619-mer", | |||
"20240620-jeu", | |||
"20240621-ven", | |||
"20240622-sam", | |||
"20240623-dim", | |||
"20240624-lun", | |||
"20240625-mar", | |||
"20240626-mer", | |||
"20240627-jeu", | |||
"20240628-ven", | |||
"20240629-sam", | |||
"20240630-dim" | |||
) | |||
$liste | ForEach-Object {New-Item -type Directory -name $_} | |||
</source> | |||
== Traitement de fichier CSV == | |||
Vidéo Youtube, TechSckool, CSV File Handling with PowerShell : | |||
* vidéo : https://www.youtube.com/watch?v=u5ML8VVKgi0 | |||
* github : https://github.com/TechSckoolByVijay/PowerShell-Scripts/tree/main/CSV_Manipulation | |||
* github : https://github.com/TechSckoolByVijay/PowerShell-Scripts/blob/main/CSV_Manipulation/CSV_manipulation.ps1 | |||
== Voir aussi == | == Voir aussi == | ||
* | * | ||
Dernière version du 12 décembre 2024 à 18:20
Script de création de dossier
<#
Nom : PSHFICCRE010
Description : création du dossier "C:\Archive"
Usage : lancement du script avec les droits d'administrateur
Particularité : néant
Auteur : fylip22
Version : 1.0
Révisions :
- 1.0 (21/05/2024) : création du script
#>
$chemin = "C:\"
$dossierNom = "Archive"
Clear-Host
If(-not(Test-Path -Path $chemin$dossierNom))
{
New-Item -ItemType Directory -Path $chemin -Name $dossierNom
Write-Host "Le dossier $chemin$dossierNom vient d'être créé" -ForegroundColor Green
}
Else
{
Write-Host "Le dossier $chemin$dossierNom existe déjà !" -ForegroundColor Red
}
Version compacte
<# Nom : PSHFICCRE010 ; Description : création du dossier "C:\Archive" ; Usage : lancement du script avec les droits d'administrateur ; Particularité : néant ; Auteur : fylip22 ; Version : 1.0 ; Révisions : - 1.0 (21/05/2024) : création du script #>
$chemin = "C:\" ; $dossierNom = "Archive" ; Clear-Host
If(-not(Test-Path -Path $chemin$dossierNom)) { New-Item -ItemType Directory -Path $chemin -Name $dossierNom ; Write-Host "Le dossier $chemin$dossierNom vient d'être créé" -ForegroundColor Green }
Else { Write-Host "Le dossier $chemin$dossierNom existe déjà !" -ForegroundColor Red }
Script de nettoyage de contenu de fichier
# Traitement de texte sur fichier brut (enlever les lignes qui contiennent les mots ou expressions indiquées) ; le nouveau fichier est "fichier2.txt"
# l'expression "^[?]" indique une ligne commençant par un point d'interrogation.
# la barre verticale sépare les expressions recherchées ; les espaces sont pris en compte.
$fichier = get-content "c:\tmp\scores.txt" | where {$_ -notmatch "^[?]|putain|bite|caca| cul| chauve| mere"}
set-content fichier2.txt $fichier
Script de suppression de fichier
Suppression des fichiers anciens
<# Description : suppression des fichiers dont la date de création est ancienne Usage : exécution du script via une tâche planifiée Auteur : PHP Version : 1.0 Révisions : - 1.0 (05/05/2023) : création du script #> $FichierAncienneteEnJour = -30 $Dossier = "C:\log" Get-ChildItem $Dossier -Recurse | Where CreationTime -lt (Get-Date).AddDays($FichierAncienneteEnJour) | Remove-Item -Force -Recurse
Exemple
# Auteur : Ph. Page
# Création : 01/12/2021
# Modification :
#
# Script de suppression de fichiers de façon récursive !
#
Clear-Host
$CheminListe = @(
'C:\test\dossier1',
'C:\test\qcm',
'C:\test\Rufus'
)
Clear-Host
Write-Host "Demande de confirmation de suppression des fichiers des dossiers suivants :"
Write-host $CheminListe -Separator "`n"
$Reponse = Read-Host "`nEtes-vous sûr de cette action ? (O/N)"
if ($reponse -eq "O") {
Write-Host "`n==> Traitement lancé..."
foreach ($Chemin in $CheminListe) {
if (Test-Path $Chemin) {
Get-ChildItem -file -recurse -Force -path $chemin | Remove-Item
#Get-ChildItem -file -recurse -Force -path $chemin
}
else {
Write-Host "`tLe dossier suivant n'existe pas ! $Chemin"
}
}
Write-Host "==> Traitement terminé."
}
else {
Write-Host "Traitement non lancé."
}
Complément
Liste des dix plus gros fichiers, tri décroissant :
Get-ChildItem -file *.vhdx -recurse | sort Length -descending | select -first 10 | Select-Object Name, @{Name="Mo";Expression={$_.Length / 1MB}}
Liste des dix plus gros fichiers, tri décroissant, avec mise en forme des valeurs numériques en Mo et 3 chiffres après la virgule :
Get-ChildItem -file *.* -recurse | sort Length -descending | select -first 10 | Select-Object -property Name, @{Label="Mo";Expression={"{0:N3}" -f ($_.Length / 1MB)}}
Script de liste (fichier, dossier...)
Liste de dossiers, nombre de fichier et taille
Ce script génère un tableau des dossiers, nombre de fichiers et taille totale, avec tri du plus grand au plus petit.
Clear-Host
$DossierSource = 'C:\Support'
# Ne liste que les dossiers de premier niveau
$DossierListe = Get-ChildItem -Directory -Path $DossierSource -Depth 0
$DossierListe |
ForEach-Object {
$Dossier = $_.FullName
$FichierNombre = (Get-ChildItem -Path $Dossier -Recurse -File).count
$Taille = (Get-ChildItem -Path $Dossier -Recurse -File | Measure-Object -Property Length -Sum).Sum
$Rapport = $Taille/($FichierNombre + 1)
[pscustomobject]@{
Répertoire = $Dossier
Nombre_fichier = $FichierNombre
Taille_MB = '{0:N2}' -f ($Taille/1MB)
Taille_GB = '{0:N2}' -f ($Taille/1GB)
Rapport_MB = '{0:N2}' -f ($Rapport/1MB)
}
} |
Sort-Object Rapport_MB -Descending |
FT
#| Export-CSV -Path C:\support\raccourcis-liste-20230403.csv -Delimiter ";"
Liste de fichiers en fonction de l'extension, de la taille
$DossierTravail = "C:\php\"
#$filtre = @(".jpg",".jpeg") # filtre pour les images au format jpg
$filtre = @(".mp4",".mov") # filtre pour les vidéos
$tailleMinimum = "2000000" # en octet (2000000 pour 2 Mo)
$ancienneteAnnee = "2023" # jusque l'année indiquée
Clear-Host
Set-Location $DossierTravail
Write-Output "Début du traitement..."
$FichierListe = Get-ChildItem -Recurse | Where-Object { ($_.Extension -in $filtre) -and ($_.Length -ge $tailleMinimum) -and ($_.CreationTime.Year -le $ancienneteAnnee) } | FT name, Length, LastWriteTime, Directory
Write-Output "Fin du traitement"
$FichierListe
Script de suppression de fichiers temporaires sur profil itinérant
$Compte = "martinp"
$DossierListe = @(
"C:\Users\$Compte\AppData\Local\Microsoft\Edge\User Data\Default\Cache\Cache_Data\",
"C:\Users\$Compte\AppData\LocalLow\Adobe\Acrobat\DC\ConnectorIcons\"
"C:\Users\$Compte\AppData\Local\Microsoft\Windows\INetCache\Content.Outlook\",
"C:\Users\$Compte\AppData\Local\Microsoft\Edge\User Data\Default\Service Worker\CacheStorage\"
)
foreach ($Dossier in $dossierliste) {
Get-ChildItem -path $Dossier -exclude "index"
$FichierNombre = (Get-ChildItem -Path $Dossier -Recurse -File -include "*.pdf").count
$Taille = (Get-ChildItem -Path $Dossier -Recurse -File -include "*.pdf" | Measure-Object -Property Length -Sum).Sum
$TotalTaille = $TotalTaille + $Taille
}
$TotalTaille_MB = '{0:N2}' -f ($TotalTaille/1MB)
write-host
write-host "=== Bilan ==="
write-host "Nombre de dossier racine :", $DossierListe
write-host "Nombre de dossier racine :", $DossierListe.Count
write-host "Nombre de fichiers :", $FichierNombre
write-host "Taille totale (Mo) :", $TotalTaille_MB
# exemples
# Get-ChildItem -Path "C:\" -Recurse -File -include "*.pdf"
Création de dossier
Set-Location "C:\Users\phil\Pictures\Voyage au Canada\"
$liste = (
"20240618-mar",
"20240619-mer",
"20240620-jeu",
"20240621-ven",
"20240622-sam",
"20240623-dim",
"20240624-lun",
"20240625-mar",
"20240626-mer",
"20240627-jeu",
"20240628-ven",
"20240629-sam",
"20240630-dim"
)
$liste | ForEach-Object {New-Item -type Directory -name $_}
Traitement de fichier CSV
Vidéo Youtube, TechSckool, CSV File Handling with PowerShell :
- vidéo : https://www.youtube.com/watch?v=u5ML8VVKgi0
- github : https://github.com/TechSckoolByVijay/PowerShell-Scripts/tree/main/CSV_Manipulation
- github : https://github.com/TechSckoolByVijay/PowerShell-Scripts/blob/main/CSV_Manipulation/CSV_manipulation.ps1
