Archives par étiquette : Fichiers

Exporter la liste des fichiers d’un lecteur par extension.

Dans l’idée de faire un peu de ménage sur un lecteur, je cherche à identifier les fichiers multimédia avec le chemin et la taille.
Ce script va créer un fichier texte pour chaque extension.

Get-ChildItem -Recurse -Path "E:\" -Include *.mp3,*.mp4,*.avi -ErrorAction silentlycontinue | ForEach {
Write-Progress -activity "Fichiers Multimédia" -Status $_.FullName
$extension = $_.name.split(".")[-1]
$size = “{0:N2}” -f ($_.Length/1mb)
$logfile = ".\logs\" + $extension + ".txt"
$present = Test-Path -Path $logfile
    if ( $present -ne "true") {
    Write-host "Création de $logfile"
    $resfile = New-Item -ItemType file -Path $logfile -Force
    Add-Content -Path $logfile -Value "Nom;Chemin;Taille"
    Add-Content -Path $logfile -Value "$($_.name );$($_.DirectoryName);$($size)"
    }
    Else {
    Add-Content -Path $logfile -Value "$($_.name );$($_.DirectoryName);$($size)"
    }
}

Lister les fichiers archivés.

Les travaux pratiques du jour:
Lister tous les fichiers qui sont archivés sur un serveur sans les désarchiver.
Les fichiers archivés on l’attribut « Offline ».
La commande suivant a eu pour effet de désarchiver tous les fichiers listés, donc il faut y aller avec des pincettes pour ne pas désarchiver tout le serveur d’un coup.

Get-ChildItem | fl

Voici les commande qui permet de lister les fichiers avec le chemin sans les agresser.

Get-ChildItem -Recurse | Where-Object { $_.Attributes -match "Offline" } | Select-Object  Name,Attributes,Fullname | Export-Csv -Path .\Exports\arhived_files.csv -Encoding unicode

Demain, nous verrons bien comment on va faire pour les désarchiver en douceur.

Modifier le contenu d’un fichier texte.

Voici quelques commandes pour traiter un fichier texte.

Supprimer les lignes contenant une chaine de caractères:

Get-Content .\fichier.txt | where { $_ -notmatch "Ligne à supprimer" }

Conserver les lignes contenant une chaine de caractères:

Get-Content .\fichier.txt | where { $_ -like "Ligne à garder*" }

Remplacer ou supprimer une chaine de caractère dans toutes les lignes:

Get-Content .\fichier.txt | foreach { $_ -replace "Mailbox: ","" }

Supprimer les lignes vides:

Get-Content .\fichier.txt | where { $_ -ne "$null" }

Supprimer les lignes en double dans un fichier.

Permet de supprimer le doublon de ligne dans un fichier texte.
Si dans un fichier texte, vous avez plusieurs lignes identiques, cette commande ne retourne qu’une seule fois la ligne.

Type .\export-brut.csv | Select -Unique

Pour revoyer le résultat vers un fichier résultat:

Type .\export-brut.csv | Select -Unique > export-nettoye.csv

Gérer les fichiers et dossiers avec Powershell.

Voici une série de commande permettant de gérer les fichiers et dossiers avec Powershell.

Afficher le chemin du dossier courant:

Get-Location

Afficher le contenu d’un dossier:

Get-ChildItem
Get-ChildItem "c:\temp"

Se déplacer dans les dossiers:

Set-Location "c:\temp"

Créer un fichier:

New-Item -Name "fichier.txt" -ItemType file -Value "Test"

Créer un dossier:

New-Item -Name "dossier" -ItemType directory

Supprimer un fichier ou un dossier:

Remove-Item "c:\temp\*.txt"

Déplacer des fichiers:

Move-Item -Path *.txt -Destination "c:\temp\"

Déplacer un dossier:

Move-Item -Path .\dossier -Destination .\temp\dossier
Move-Item -Path .\temp\dossier -Destination .\temp\dossier2"

Renommer un fichier ou un dossier:

Rename-Item -Path fichier.txt -NewName fichier2.txt
Rename-Item -Path dossier -NewName dossier2

Copier un fichier ou un dossier:

Copy-Item -Path .\fichier.txt -Destination c:\temp
Copy-Item -Path dossier -Destination c:\temp -Recurse

Modifier les droits sur un fichier.


Ce script permet de rapidement configurer la sécurité sur un fichier.

$list = "jacques.martin","Groupe-Ecole_des_Fans"
foreach ($user in $list){
$folder = "\SRV001i$chansons.txt"
$acl = Get-Acl -Path $folder
$ar = New-Object system.security.accesscontrol.filesystemaccessrule($user,"FullControl","Allow")
$acl.SetAccessRule($ar)
Set-Acl -Path $folder $acl
}