Question Script pour afficher le dernier utilisateur qui a ouvert un fichier

Plus d'informations
il y a 1 an 1 semaine #33638 par Roxyy
Bonjour ! 

Je suis en alternance et mon tuteur aimerait que je fasse un script qui permet à nos users de spécifier un fichier, et que cela leur renvoie le dernier utilisateur qui l'a ouvert ( notamment pour des soucis de fichier qui sont bloqués ou qui ne sont pas modifiables).

J'ai réussi à faire un premier script qui me donne malheureusement uniquement les groupes de l'utilisateur qui a ouvert en dernier le fichier spécifié.
# Demander à l'utilisateur de saisir le chemin du fichier
$file = Read-Host -Prompt "Entrez le chemin complet du fichier"

# Vérifier si le fichier existe
if (Test-Path $file -PathType Leaf) {
    $fileSecurity = Get-Acl $file
    # Obtenir le dernier utilisateur à avoir accédé au fichier
    $lastUser = $fileSecurity.GetAccessRules($true, $true, [System.Security.Principal.SecurityIdentifier]) | 
                Select-Object -First 1 | 
                ForEach-Object { $_.IdentityReference.Translate([System.Security.Principal.NTAccount]).Value }
    Write-Host "Le dernier utilisateur à avoir ouvert $file est : $lastUser"
} else {
    Write-Host "Le fichier spécifié n'existe pas."
}

Cependant j'aimerais que cela affiche le nom d'utilisateur.
Quelqu'un peut m'aider ? 
Merci 
 

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 1 an 1 semaine #33642 par Dead
Bonjour,

Cela peut peut être vous aider. Je pense que votre $fileSecurity.GetAccessRules pose souci.


# Demander à l'utilisateur de saisir le chemin du fichier
$file = Read-Host -Prompt "Entrez le chemin complet du fichier"

# Vérifier si le fichier existe
if (Test-Path $file -PathType Leaf) {
$fileSecurity = Get-Acl $file
$lastAccess = $fileSecurity | Get-Acl | Select-Object -ExpandProperty Access |
Sort-Object -Property LastAccessTime -Descending |
Select-Object -First 1

if ($lastAccess) {
$lastUser = $lastAccess.IdentityReference.Translate([System.Security.Principal.NTAccount]).Value
Write-Host "Le dernier utilisateur à avoir ouvert $file est : $lastUser"
} else {
Write-Host "Aucune information d'accès trouvée pour $file."
}
} else {
Write-Host "Le fichier spécifié n'existe pas."
}

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 1 an 1 semaine #33646 par Roxyy
Bonjour,

Merci pour votre message, je viens d'essayer avec votre script mais cela ne me renvois toujours que le groupe du dernier utilisateur qui a ouvert le fichier :/

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 1 an 1 semaine #33648 par Dead
Bonjour,

Et avec cela:

# Demander à l'utilisateur de saisir le chemin du fichier
$file = Read-Host -Prompt "Entrez le chemin complet du fichier"

# Vérifier si le fichier existe
if (Test-Path $file -PathType Leaf) {
$fileSecurity = Get-Acl $file
$lastAccess = $fileSecurity | Get-Acl | Select-Object -ExpandProperty Access |
Where-Object { $_.IdentityReference -is [System.Security.Principal.NTAccount] } |
Sort-Object -Property LastAccessTime -Descending |
Select-Object -First 1

if ($lastAccess) {
$lastUser = $lastAccess.IdentityReference.Translate([System.Security.Principal.NTAccount]).Value
Write-Host "Le dernier utilisateur à avoir ouvert $file est : $lastUser"
} else {
Write-Host "Aucune information d'accès trouvée pour $file."
}
} else {
Write-Host "Le fichier spécifié n'existe pas."
}

Avec cette modification, le script filtre les résultats pour s'assurer que l'IdentityReference est un objet de type [System.Security.Principal.NTAccount], ce qui devrait vous donner l'utilisateur spécifique plutôt que le groupe. Veuillez tester ce script et faites-moi savoir si cela répond à vos attentes.

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 1 an 1 semaine #33649 par Roxyy
Non malheureusement toujours pas, le script ne me renvois que le groupe ://

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 1 an 1 semaine - il y a 1 an 1 semaine #33657 par Arnaud Petitjean
Bonjour,

Je pense que vous faites fausse route car les ACLs d'un fichier ne contiennent pas - à ma connaissance - d'information au sujet de la personne qui a ouvert un fichier. Les ACLs contiennent des permissions d'accès.

Pour moi, il faut activer les logs d'audits et aller chercher l'information dans les logs.

MVP PowerShell et créateur de ce magnifique forum :-)
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Dernière édition: il y a 1 an 1 semaine par Arnaud Petitjean.

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.134 secondes
Propulsé par Kunena