Question Suppression des sessions windows inutilisés

Plus d'informations
il y a 7 ans 9 mois #25437 par Louis
Bonjour,
Je dois faire un script permettant la suppression des sessions utilisateur inutilisé depuis 1 an sur l'ensemble de nos serveurs windows.
Sans passer forcément par l'AD et les GPO sauf pour récuperer la liste des serveurs.

Sauf que je ne trouve pas grand chose à ce sujet sur le net, à part une commande pour récupérer les sessions avec le get wmi mais il ne récupère pas de LastlogonDate...

Le Get -ADuser me sort pas mal d'utilisateur mais sur certains il n'y a aucun LastLogonDate (je crois que c'est parce que ils ne se sont jamais connecté sur le serveur de l'AD).
Et cette commande ne fonctionne pas sur les serveurs lambda, juste sur l'AD.

Quelqu'un aurait des pistes ?

Merci d'avance

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

Plus d'informations
il y a 7 ans 9 mois #25438 par Quentin
Bonjour en cherchant 2 minutes sur la toile je suis tombé sur ça :

[code:1]
$adsi = [ADSI]\"WinNT://$env:COMPUTERNAME\"
$adsi.Children | where {$_.SchemaClassName -eq 'user'} | ft name,lastlogin

#ça te renvoi :
PS C:\Users\Administrateur> $adsi.Children | where {$_.SchemaClassName -eq 'user'} | ft name,lastlogin

name lastlogin
----
{Administrateur} {31/05/2018 13:03:47}
{Invité}
[/code:1]

Par contre je ne saurais pas t'expliquer, je ne comprends pas moi même, je vais chercher et donner plus d'informations par la suite

Cordialement,
Whitatrax

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

Plus d'informations
il y a 7 ans 9 mois #25443 par Philippe
salut luigi77270 et Whitatrax

la suppression des sessions utilisateur inutilisé depuis 1 an

je pense que tu voulais dire des comptes inutilisé !

Whitatrax ta trouvé une solution qui fonctionne via l'ADSI.
ça te donne la liste des comptes utilisateurs locaux d'un ordinateur ainsi que le lastlogin qui est identique au LastLogonDate de l'AD

Le Get -ADuser me sort pas mal d'utilisateur mais sur certains il n'y a aucun LastLogonDate (je crois que c'est parce que ils ne se sont jamais connecté sur le serveur de l'AD).

exact et idem en ADSI
sauf si tu a plusieurs serveurs AD, il se peut pour le premier mois d'un compte que le LastLogonDate soit sur un seul serveur AD

si tu a besoin de plus d'info n'hésite pas

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

Plus d'informations
il y a 7 ans 9 mois #25456 par Louis
Merci à Whitatrax de m'avoir aider a trouver un petit script
Et merci a toi 6ratgus de m'avoir un peu plus éclairer :)

Du coup je viens d'éxécuter le script sur l'AD, la liste que je vois est celle des utilisateurs qui se sont connecté à ce serveur(ça me parait beaucoup) ou à n'importe quel serveurs de l'AD (ça me parait peu) ?

Et pour te répondre 6ratgus, je veux supprimer les sessions windows des personnes qui ne sont plus dans l'entreprise. Car ça prend de la place sur le disque pour rien.
Donc en gros j'aimerai supprimer les user de l'AD (mais j'ose pas trop y touché car je suis junior) et par la même occasion effacé toutes leurs session sur les serveurs windows pour libéré de l'espace disque :)

Au passage, si je fais un | remove, il se passe quoi ?:blush:

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

Plus d'informations
il y a 7 ans 9 mois #25464 par Quentin
Bonjour,

Je me permets une parenthèse (tu liras si tu as envi, c'est des best-pratices, ça peut servir, sinon passe au point 2)

1)
Je ne sais pas quelle taille a ton entreprise, mais je pense qu'il faut mettre en place des processus de gestion du personnel dans l'AD :
l'idée c'est que quand une personne quitte l'entreprise il faut au moins désactiver son compte et le déplacer dans une OU que tu peux appeler par exemple To_Remove.

Tu te demandes certainement pourquoi je dis ça?

=> Le fait est que certains comptes de l'AD ne sont pas forcément utilisés pour se connecter (compte de service etc...) Donc ces comptes, s'ils n'ont jamais servi pour se connecter, tu vas les détecter comme inutiles et tu vas les supprimer. Et c'est là que les embrouilles commencent ! Il suffit qu'une application de ton entreprise nécessitant ce compte, détecte que le compte n'existe plus pour qu'elle s'arrête de fonctionner.
(exemple : un compte de service utilisé uniquement dans le cadres des tâches planifiées)

2)
Le script que je t'ai transmis utilise la variable d'environnement \"WinNT://$env:COMPUTERNAME\". C'est l'environnement propre à la machine. Les résultats que tu vois sont ceux de la machine sur laquelle tu as exécuter le script. Il faut donc le passer sur tous les serveurs

3)

Au passage, si je fais un | remove, il se passe quoi ?

Je ne te conseille pas de procéder ainsi (de toute manière je pense que powershell te dira non).
Le mieux (d'après moi), c'est de faire un listing complet de tous les comptes réellement inutiles (voir §1 pour les détails). A partir de ce listing, tu créé un petit script de suppression visant à vider une OU par exemple.
Quand on touche à l'AD, c'est ceinture bretelle =)
Pense à faire des sauvegardes de ton AD on ne sait jamais.

Si ce n'est pas assez clair n'hésite pas à poser tes questions. Les avis ici ne m'impliquent que moi, c'est des choses que je mets en place et qui m'évitent des problèmes

Cordialement,
Whitatrax

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

Plus d'informations
il y a 7 ans 9 mois #25474 par Philippe
je rejoint Whitatrax pour les bonnes pratiques, désactiver les comptes inutiles, les déplacer dans une OU spécifique et la suppression après un délais pour laisser un temps pour la recuperation de fichier utile dans les profils locaux

voici le detail des étapes :
tu commencer par lister les utilisateurs inactif de 3 ou 6 mois dans l'AD comme ça :
[code:1]$listeinactif = get-aduser -filter * -Properties LastLogonDate | where {$_.LastLogonDate -ne $null -and ( (Get-Date) - $_.LastLogonDate).totaldays -gt 90} # 90 jours pour trois mois
$listeinactif | Export-Csv \"c:\temp\listeinactif.csv\" -Delimiter \";\"
[/code:1]$_.LastLogonDate -ne $null filtre les utilisateurs qui n'ont pas de date
la liste ce trouve dans le fichier \"c:\temp\listeinactif.csv\" que tu peut ouvrir dans excel

si la liste te semble bonne tu les désactives :
[code:1]$listeinactif = get-aduser -filter * -Properties LastLogonDate | where {$_.LastLogonDate -ne $null -and ( (Get-Date) - $_.LastLogonDate).totaldays -gt 90}
$listeinactif | Disable-ADAccount[/code:1]

après cette désactivation dans l'AD, tu passe au travail en local sur les serveurs ou/et poste de travail
un compte AD ne crée pas de compte local mais que le \"profil\" (le dossier dans c:\users et dans la base de registre)
là tu utilise la script de Whitatrax
plus la suppression du dossier dans c:\users
[code:1]$listeinactif = import-csv \"c:\temp\listeinactif.csv\" -Delimiter \";\"
$listeinactif | remove-item \"c:\users\$($_.SamAccountName)\"[/code:1]
a exécuter sur chaque serveur, il faut évidement copier le fichier \"c:\temp\listeinactif.csv\" localement ou le mettre dans un partage

je viens d'éxécuter le script sur l'AD, la liste que je vois est celle des utilisateurs qui se sont connecté à ce serveur

sur un serveur AD il n'y a pas d'utilisateurs locaux
du coup tu a la liste de tous les utilisateurs du domaine même si y il ne ce sont jamais connecter !

Au passage, si je fais un | remove, il se passe quoi ?

rien ! remove seul n'existe pas et provoque donc une erreur
il faut faire un delete :
[code:1]$adsi.Children | where {$_.SchemaClassName -eq 'user'} | foreach {$adsi.delete('user', \"$(_.name)\"«»)}[/code:1]
mais ça ne supprime que le compte, pas les fichiers
il faut aussi soit effacer le dossier de l'utilisateur sur le disque soit utilisé un utilitaire pour effacer le profil utilisateur

il existe un utilitaire chez Microsoft pour effacer les vieux compte/profil d'un serveur c'est defprof voici la doc
ATTENTION lis attentivement la doc car il peut effacer TOUS les comptes sauf les comptes systems si tu ne precise pas le paramètre /D pour le délais d'inactivité
peut utiliser la paramètre /P pour qu'il te demande effacement avant pour chaque compte

Si ce n'est pas assez clair n'hésite pas à poser tes questions<br><br>Message édité par: 6ratgus, à: 1/06/18 15:05

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

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