Question
[Résolu]connaitre le propriétaire d'un fichier
- Axel
- Auteur du sujet
- Hors Ligne
- Membre elite
-
Réduire
Plus d'informations
- Messages : 176
- Remerciements reçus 0
il y a 10 ans 11 mois #19952
par Axel
Réponse de Axel sur le sujet Re:connaitre le propriétaire d'un fichier
j'ai réussi à connaitre le propriétaire d'un fichier grâce à la commande sur la console powershell mais maintenant j'esseye d'intégrer cette commande à mon code mais je n'y arrive pas !!!
pouvez-vous me donner une piste s'il-vous-plaît !?
voici mon code:
[code:1]
#demande de la valeur minimum en octet des fichiers à analyser
$length = read-host \"`nIndiquer la taille minimum pour l'analyse des fichiers en Octet: \"
$taille = $length
$chemin = read-host \"`nIndiquer la localisation du répertoire pour lancer l'analyse: \"
#recherche des fichiers par rapport à la taille
$files = gci $chemin * -recurse -force |
where-object {$_.length -gt $taille}
#création
$doublons = $files |
sort-object length |
group-object length |
where-object {$_.count -gt 1}
function Clear-KeyboardBuffer {
while ($Host.UI.RawUI.KeyAvailable)
{$null = $Host.UI.RawUI.ReadKey(\"NoEcho,IncludeKeyDown,IncludeKeyUp\"«»)}
}
function YesNo {
param(
$Caption,
$Message,
[ValidateSet(\"Yes\",\"No\"«»)]
$DefaultChoice=\"No\"
)
Clear-KeyboardBuffer
$Yes = New-Object System.Management.Automation.Host.ChoiceDescription \"&Yes\"
$No = New-Object System.Management.Automation.Host.ChoiceDescription \"&No\"
$Choices = [System.Management.Automation.Host.ChoiceDescription[]]($Yes,$No)
$Host.UI.PromptForChoice($Caption,$Message,$Choices,([byte]($DefaultChoice -eq \"no\"«»)))
}
function Get-FileHash {
[CmdletBinding()]
Param(
[Parameter(Position=0,Mandatory=$true, ValueFromPipelineByPropertyName=$true,ValueFromPipeline=$True)]
[Alias(\"PSPath\",\"FullName\"«»)]
[string[]]$Path,
[Parameter(Position=1)]
[ValidateSet(\"MD5\"«»)]
[string[]]$Algorithm = \"MD5\"
)
Process {
ForEach ($item in $Path) {
$item = (Resolve-Path $item).ProviderPath
$object = New-Object PSObject -Property @{
Path = $item
}
#ouverture flux
$stream = ([IO.StreamReader]$item).BaseStream
foreach ($Type in $Algorithm) {
[string]$hash = -join ([Security.Cryptography.HashAlgorithm]::Create( $Type ).ComputeHash( $stream ) |
ForEach {\"{0:«»X0}\" -f $_ })
$null = $stream.Seek(0,0)
$object = Add-Member -InputObject $Object -MemberType NoteProperty -Name $Type -Value $Hash -PassThru
}
$object.pstypenames.insert(0,'System.IO.FileInfo.Hash')
#sortie du Hash et du chemin
Write-Output $object
#fermeture flux
$stream.Close()
}
}
}
function new-rapport {
param($fichier)
#construit un nouvel objet à partir d'un objet fichier
#par défaut le résultat est émis dans le pipeline
select-object -inputobject $fichier -property 'Lastwritetime','FullName','Length','Owner'
}
#affichage
#boucle sur la collection principale
$rapport = $doublons |
foreach-object {
#boucle sur la collection group de chaque doublon
$_.group |
foreach-object {
#boucle sur la collection de fichiers de chaque group
new-rapport -fichier $_
}#file
}#group
$i = 0
#calcul le nombre de fichiers trouvé
$rapport | foreach {
$i = $i + 1
}
$Yes = 0
$No = 1
if ($i -gt 1)
{
$Choice = YesNo -message \"`n$i fichiers trouvés, voulez-vous les afficher ?\"
}
else
{
write-host \"`nIl n'y a pas de doublon`n\"
}
if ($Choice -eq $Yes)
{
$rapport | format-table
$Choice = YesNo -message \"`nVoulez-vous calculer leur MD5 ?\"
if ($Choice -eq $Yes)
{
$rapport | Get-FileHash
$Choice = YesNo -message \"`nVoulez-vous exporter les informations ?\"
if ($Choice -eq $Yes)
{
$rapport | export-csv \"C:\Temp\RapportFiles.csv\" -Delimiter \";\"
write-host \"Les informations ont été enregistrées dans C:\Temp\RapportFiles.csv\"
}
}
}
[/code:1]
pouvez-vous me donner une piste s'il-vous-plaît !?
voici mon code:
[code:1]
#demande de la valeur minimum en octet des fichiers à analyser
$length = read-host \"`nIndiquer la taille minimum pour l'analyse des fichiers en Octet: \"
$taille = $length
$chemin = read-host \"`nIndiquer la localisation du répertoire pour lancer l'analyse: \"
#recherche des fichiers par rapport à la taille
$files = gci $chemin * -recurse -force |
where-object {$_.length -gt $taille}
#création
$doublons = $files |
sort-object length |
group-object length |
where-object {$_.count -gt 1}
function Clear-KeyboardBuffer {
while ($Host.UI.RawUI.KeyAvailable)
{$null = $Host.UI.RawUI.ReadKey(\"NoEcho,IncludeKeyDown,IncludeKeyUp\"«»)}
}
function YesNo {
param(
$Caption,
$Message,
[ValidateSet(\"Yes\",\"No\"«»)]
$DefaultChoice=\"No\"
)
Clear-KeyboardBuffer
$Yes = New-Object System.Management.Automation.Host.ChoiceDescription \"&Yes\"
$No = New-Object System.Management.Automation.Host.ChoiceDescription \"&No\"
$Choices = [System.Management.Automation.Host.ChoiceDescription[]]($Yes,$No)
$Host.UI.PromptForChoice($Caption,$Message,$Choices,([byte]($DefaultChoice -eq \"no\"«»)))
}
function Get-FileHash {
[CmdletBinding()]
Param(
[Parameter(Position=0,Mandatory=$true, ValueFromPipelineByPropertyName=$true,ValueFromPipeline=$True)]
[Alias(\"PSPath\",\"FullName\"«»)]
[string[]]$Path,
[Parameter(Position=1)]
[ValidateSet(\"MD5\"«»)]
[string[]]$Algorithm = \"MD5\"
)
Process {
ForEach ($item in $Path) {
$item = (Resolve-Path $item).ProviderPath
$object = New-Object PSObject -Property @{
Path = $item
}
#ouverture flux
$stream = ([IO.StreamReader]$item).BaseStream
foreach ($Type in $Algorithm) {
[string]$hash = -join ([Security.Cryptography.HashAlgorithm]::Create( $Type ).ComputeHash( $stream ) |
ForEach {\"{0:«»X0}\" -f $_ })
$null = $stream.Seek(0,0)
$object = Add-Member -InputObject $Object -MemberType NoteProperty -Name $Type -Value $Hash -PassThru
}
$object.pstypenames.insert(0,'System.IO.FileInfo.Hash')
#sortie du Hash et du chemin
Write-Output $object
#fermeture flux
$stream.Close()
}
}
}
function new-rapport {
param($fichier)
#construit un nouvel objet à partir d'un objet fichier
#par défaut le résultat est émis dans le pipeline
select-object -inputobject $fichier -property 'Lastwritetime','FullName','Length','Owner'
}
#affichage
#boucle sur la collection principale
$rapport = $doublons |
foreach-object {
#boucle sur la collection group de chaque doublon
$_.group |
foreach-object {
#boucle sur la collection de fichiers de chaque group
new-rapport -fichier $_
}#file
}#group
$i = 0
#calcul le nombre de fichiers trouvé
$rapport | foreach {
$i = $i + 1
}
$Yes = 0
$No = 1
if ($i -gt 1)
{
$Choice = YesNo -message \"`n$i fichiers trouvés, voulez-vous les afficher ?\"
}
else
{
write-host \"`nIl n'y a pas de doublon`n\"
}
if ($Choice -eq $Yes)
{
$rapport | format-table
$Choice = YesNo -message \"`nVoulez-vous calculer leur MD5 ?\"
if ($Choice -eq $Yes)
{
$rapport | Get-FileHash
$Choice = YesNo -message \"`nVoulez-vous exporter les informations ?\"
if ($Choice -eq $Yes)
{
$rapport | export-csv \"C:\Temp\RapportFiles.csv\" -Delimiter \";\"
write-host \"Les informations ont été enregistrées dans C:\Temp\RapportFiles.csv\"
}
}
}
[/code:1]
Connexion ou Créer un compte pour participer à la conversation.
- Axel
- Auteur du sujet
- Hors Ligne
- Membre elite
-
Réduire
Plus d'informations
- Messages : 176
- Remerciements reçus 0
il y a 10 ans 11 mois #19953
par Axel
Réponse de Axel sur le sujet Re:connaitre le propriétaire d'un fichier
j'ai même essayé Get-ChildItem C:\Scripts -recurse | ForEach-Object {Get-Acl $_.FullName}
mais aucun succès
mais aucun succès
Connexion ou Créer un compte pour participer à la conversation.
- xyz
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 69
il y a 10 ans 11 mois #19954
par xyz
Tutoriels PowerShell
Réponse de xyz sur le sujet Re:connaitre le propriétaire d'un fichier
Harcide écrit:
Que veux-tu faire de cette information ?maintenant j'esseye d'intégrer cette commande à mon code mais je n'y arrive pas !!!
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Axel
- Auteur du sujet
- Hors Ligne
- Membre elite
-
Réduire
Plus d'informations
- Messages : 176
- Remerciements reçus 0
il y a 10 ans 11 mois #19955
par Axel
Réponse de Axel sur le sujet Re:connaitre le propriétaire d'un fichier
j'aimerais obtenir l'information owner et l'exporter dans mon fichier csv<br><br>Message édité par: Harcide, à: 8/06/15 17:24
Connexion ou Créer un compte pour participer à la conversation.
- xyz
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 69
il y a 10 ans 11 mois #19957
par xyz
Tutoriels PowerShell
Réponse de xyz sur le sujet Re:connaitre le propriétaire d'un fichier
Ok.
Où sont regroupés tes informations actuelles ?
Où sont regroupés tes informations actuelles ?
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Axel
- Auteur du sujet
- Hors Ligne
- Membre elite
-
Réduire
Plus d'informations
- Messages : 176
- Remerciements reçus 0
il y a 10 ans 11 mois #19959
par Axel
Réponse de Axel sur le sujet Re:connaitre le propriétaire d'un fichier
je les exporte dans un fichier .csv
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.043 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- [Résolu]connaitre le propriétaire d'un fichier