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

Plus d'informations
il y a 7 mois 3 semaines #33672 par Fabien
J'avais un script avec "Openfiles" pour visualiser les fichiers ouverts sur un partage CIFS.
Je vais retrouver ça.

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

Plus d'informations
il y a 7 mois 3 semaines #33674 par Arnaud Petitjean
Merci Fabien mais je crois que ce n'est pas sa demande.

Roxxy souhaite récupérer le nom du dernier utilisateur qui a ouvert un fichier.

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 ?

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

Plus d'informations
il y a 7 mois 3 semaines #33678 par Fabien
Je ne sais pas si cela correspond à la demande de Roxyy mais je donne quand même le code au cas où 
Ce script permet de lister les fichiers ouverts sur un partage sous forme de tableau avec le chemin du fichier et l'utilisateur.
Je m'en sers pour fermer les fichiers qui sont bloqués en modification par un utilisateur.
Ce script est à lancer en Administrateur.
function Get-OpenFiles
{
    Param
    (
        [string]$Share,
        [string]$Filter
    )

    # Récupérer la liste des fichiers ouverts et enregistrer le résultat dans un fichier CSV
    $openfilescsv = openfiles.exe /query /s $Share /fo csv /V
    # Enlever la première ligne du CSV
    $openfilescsv = $openfilescsv | select -skip 1
    # Convertir le fichier CSV en Objet
    $openfiles = ConvertFrom-Csv $openfilescsv -Header "computer","id","user","os","int","mode","fullname"
    
    # Création de la table
    $dt = New-Object System.Data.DataTable("files")
    
    # Configuration de la table
    $cols = @("computer","id","user","os","int","mode","fullname")
    foreach ($col in $cols) {
        $dt.Columns.Add($col) | Out-Null
    }

    # Ajouter les valeurs dans une table
    foreach ($line in $openfiles) {
        $row = $dt.NewRow()
        foreach ($col in $cols) {
            $row[$col] = $line.$col
        }
        $dt.Rows.Add($row) | Out-Null
    }

    # Créer un tableau avec le filtre de recherche $FilterKey et trier par chemin
    $dv = New-Object System.Data.DataView($dt)
    $dv.RowFilter = "fullname like '$($Filter)'"
    $dv.Sort = "fullname"

    # Créer une autre vue avec les colonnes souhaitées
    $displayDt = $dv.ToTable($False, "fullname", "user", "id")
    $displayDv = New-Object System.Data.DataView($displayDt)

    # Affichage du résultat dans un tableau
    if ($displayDv.Count -gt 0) {
        $displayDv | Out-GridView
    } else {
        Write-Host "Pas de fichiers trouvés!"
    }
}

#Appel de la fonction en indiquant le nom du partage et le fichier recherché
Get-OpenFiles -Share "\\Partage" -Filter "*.xlsx"

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

Plus d'informations
il y a 7 mois 3 semaines #33679 par Roxyy
Oui oui c'est évidemment sur un serveur de fichier, en entreprise. Si c'était pour la maison il m'aurait suffi d'aller demander à la personne concernée x)

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

Plus d'informations
il y a 7 mois 3 semaines #33680 par Roxyy
Je test ce script dans mon entreprise demain je vous tiens au courant, merci beaucoup ! 

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

Plus d'informations
il y a 7 mois 2 semaines #33700 par Arnaud Petitjean
Alors ? Quelles sont les nouvelles du front ? ;-)

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 ?

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

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