Question Script listant les utilisateurs inactifs d'un DC

Plus d'informations
il y a 11 ans 8 mois #17745 par theduc
Bonjour,

je cherche a faire un script qui permettrait de lister les utilisateurs inactifs de mon domain controller et qui me permettrait, en me basant sur le nom du compte, d'effectuer une recherche dans une grosse arborescence et qu'il me ressorte les folders correspondant au nom de comptes.

Voila ce que j'ai déja fait.

Import-Module ActiveDirectory

$then = (Get-Date).AddDays(-180) # The 180 is the number of days from today since the last logon.

$NomUtilisateur = Get-ADUser -Property SamAccountName -Filter {lastLogonDate -lt $then} | FT SamAccountName
$NomUtilisateur | Out-File c:temp.csv
Get-Content c:temp.csv | Where { $_.Replace(\",\",\"\") -ne \"\" } | Out-File c:User.csv
Remove-Item C:temp.csv -force
$lines = import-csv C:User.csv

foreach ($test in $lines){
get-childitem -recurse ****Users | where {$_.Attributes -eq 'Directory'} | where { $_.Name -like \"$test.SamAccountName\"} | foreach {$_.Get_FullName()}
}

Ce qui est bizarre est que lorsque je tape la commande get-childitem -recurse ****Users | where {$_.Attributes -eq 'Directory'} | where { $_.Name -like \"nom d'un dossier en direct\"} | foreach {$_.Get_FullName()}, la commande s’exécute normalement mais lorsque la commande tape sur le csv, cela ne fonctionne pas.

Merci d'avance pour votre aide

Yoann

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

Plus d'informations
il y a 11 ans 8 mois #17746 par Gabriel
Salut

plusieurs choses notamment sur la partie CSV

[code:1]
Import-Module ActiveDirectory

$then = (Get-Date).AddDays(-180) # The 180 is the number of days from today since the last logon.

Get-ADUser -Property SamAccountName -Filter {lastLogonDate -lt $then} | export-csv c:\temp\exportUtilisateursInactifs.csv -notypeinformation
[/code:1]

Ensuite la 2eme partie peut etre ameliorer tu fais un Get-childitem alors que tu pourrais faire un test-path (en inversant le processus grosso modo):

[code:1]
$utilisateursInactifs = import-csv c:\temp\exportUtilisateursInactifs.csv

$cheminSource = \\serveur01\home # racine du repertoire ou se trouve tous les homedrive a tester

$utilisateursInactifs | foreach {
$cheminATester = join-path $cheminSource $_.samaccountname
if (test-path -literalpath $cheminATester){ write-host $cheminATester -foregroundcolor GREEN
} else { write-host $cheminATester -foregroundcolor RED}
[/code:1]

tu peux te passer du csv d'ailleurs
[code:1]
Import-Module ActiveDirectory

$then = (Get-Date).AddDays(-180) # The 180 is the number of days from today since the last logon.
$cheminSource = \\serveur01\home # racine du repertoire ou se trouve tous les homedrive a tester

Get-ADUser -Property SamAccountName -Filter {lastLogonDate -lt $then} | foreach {
$cheminATester = join-path $cheminSource $$_.samaccountname
if (test-path -literalpath $cheminATester){ write-host $cheminATester -foregroundcolor GREEN
} else { write-host $cheminATester -foregroundcolor RED}
[/code:1]

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

Plus d'informations
il y a 11 ans 8 mois #17747 par Gabriel
un dernier point

ne JAMAIS JAMAIS ecrire à la racine de ton disque systeme, il vaut mieux que tu le fasse dans un sous-repertoire,
  • d'abord parceque comme ça tu n'a pas a nettoyer, et donc supprimer par erruer des fichiers que tu n'aurais pas du supprimer
  • ensuite si ton code fonctionne avec toi qui est admin, il peut ne pas fonctionner avec d'autres personnes qui ne seront pas admin, et tu devras debuggé inutilement
  • Connexion ou Créer un compte pour participer à la conversation.

    Plus d'informations
    il y a 11 ans 8 mois #17748 par theduc
    Merci pour ta reponse.

    ça m'aide beaucoup !!!

    Par contre, mon souci c'est qu'il y a des sous dossiers dans lesquels il doit tester aussi.
    admettons que j'ai un utilisateur qui s'appelle bertrand et qui a un répertoire personnel dans l'arborescence \\serveur01\home.
    cela fonctionnerait si le repertoire du rep perso de bertrand est \\serveur01\home\bertrand mais dans mon cas, bertrand est stocké au niveau de \\serveur01\home\informatique\bertrand.
    comment puis je faire dans ce cas ?

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

    Plus d'informations
    il y a 11 ans 8 mois #17749 par Gabriel
    lister l'ensemble des repertoires contenant les dossiers homes et bouclé dessus, si je reprend ton exemple et supposons qu'il y est plusieurs repertoire (ca marche aussi avec les serveurs)

    [code:1]
    \\serveur01\home
    \\serveur01\home\informatique
    \\serveur01\home\compta
    \\serveur99\home\compta
    \\serveur99\home\stagiaires
    [/code:1]

    alors tu fais ceci
    [code:1]Import-Module ActiveDirectory

    $then = (Get-Date).AddDays(-180) # The 180 is the number of days from today since the last logon.
    # racine du repertoire ou se trouve tous les homedrive a tester
    [string[]]$cheminSources = \"\\serveur01\home\",\"\\serveur01\home\informatique\",\"\\serveur01\home\compta\",\"\\serveur99\home\compta\",\"\\serveur99\home\stagiaires\"

    Get-ADUser -Property SamAccountName -Filter {lastLogonDate -lt $then} | foreach {
    foreach ($cheminSourceATester in $cheminSources){
    $cheminATester = join-path $cheminSourceATester $$_.samaccountname
    if (test-path -literalpath $cheminATester){ write-host $cheminATester}
    }
    }[/code:1]

    [string[]]$cheminSourceste permet de creer une liste de string, tu peux donc faire une boucle pour chaque string

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

    Plus d'informations
    il y a 11 ans 8 mois #17750 par Gabriel
    un point, les homdrive sont normalement stocké dans le compte Ad de l'utilisateur

    [code:1]
    get-aduser Guillaume -Properties homeDirectory
    [/code:1]

    donc tu n'a normalement pas a aller chercher a l'aveugle...


    [code:1]
    Import-Module ActiveDirectory

    $then = (Get-Date).AddDays(-180) # The 180 is the number of days from today since the last logon.

    Get-ADUser -Property homeDirectory -Filter {lastLogonDate -lt $then} |
    select SamAccountName,homeDirectory |
    export-csv .\listeHomderiveUtilisateursInactifs.csv -notypeinformation
    [/code:1]

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

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