Question
Récupérer users inactifs
- Dupont
- Auteur du sujet
- Hors Ligne
- Membre senior
-
- Messages : 48
- Remerciements reçus 0
Connexion ou Créer un compte pour participer à la conversation.
- Philippe
- Hors Ligne
- Modérateur
-
- Messages : 1778
- Remerciements reçus 21
Dommage je venais de trouvé le temps de te faire le code :
[code:1]$objD = New-Object System.DirectoryServices.DirectorySearcher
$objD.Filter = \"(&(objectCategory=User)((userAccountControl:1.2.840.113556.1.4.803:=2)))\"
$colProplist = \"name\", \"SamAccountName\", \"lastLogonTimestamp\"
$colPropList | foreach {$objD.PropertiesToLoad.Add($_) | out-null}
$person = $objD.FindAll()
$jours = (Get-Date).AddDays(-365) # date butoire d'inactif
$person | select-object @{e={$_.properties.samaccountname};n='samaccountname'},
@{e={$_.properties.name};n='name'},
@{e={$([datetime]\"01/01/1601\"«»).AddTicks($($_.properties.lastlogontimestamp))};n='lastlogontimestamp'} |
where {$_.lastlogontimestamp -lt $jours} | Format-Table
# is tu ne doit pas gère les utilisateurs sans date prendre la boucle si dessous
$person | select-object @{e={$_.properties.samaccountname};n='samaccountname'},
@{e={$_.properties.name};n='name'},
@{e={$([datetime]\"01/01/1601\"«»).AddTicks($($_.properties.lastlogontimestamp))};n='lastlogontimestamp'} |
where {$_.lastlogontimestamp -lt $jours -and $_.lastlogontimestamp -ne $null} |
export-csv C:\Projet\InactiveAccount.Csv
[/code:1]
pour un autre peut être
Message édité par: 6ratgus, à: 21/01/15 11:15<br><br>Message édité par: 6ratgus, à: 21/01/15 11:16
Connexion ou Créer un compte pour participer à la conversation.
- Dupont
- Auteur du sujet
- Hors Ligne
- Membre senior
-
- Messages : 48
- Remerciements reçus 0
Mais quand je vois une syntaxe comme ça c'est la que je vénère les cmdlets Get-QAD
Le truc c'est que je suis toujours un peu bloqué sur la date , j'arrive pas à la selectionner pour la comparer ensuite ( je vais voir le script en haut si j'arrive à m'en servir mdr )
[code:1]
$OU = \"AD2003.lo/Test\" #Mettre AD et OU des utilisateurs à extraire
$OU2 = \"AD2003.lo/Users\"
$date = \"21/01/2015\" #Format à changer
$disableAccounts = Get-QADUser -disabled -SearchRoot $OU2
echo $disableAccounts
Write-Host \"Ces utilisateurs seront transférés dans le fichier C:\Projet\disableAccounts.Csv \"
$disableAccounts > C:\Projet\disableAccounts.Csv
#Comptes inactifs à prendre
$inactiveAccounts = Get-QADUser -SearchRoot $OU2 | select lastLogon
if ( $inactiveAccounts -lt $date ) #Condition à corriger sinon le reste est bon
{
Write-Host \"Les utilisateurs ne s'étant pas connectés avant le :\"$date \"seront considérés comme inactifs\"
$inactiveAccounts2 = Get-QADUser -SearchRoot $OU2 | select SamAccountName,lastLogon,CN
$inactiveAccounts2 > C:\Projet\inactiveAccounts.Csv
}
else
{
Write-Host \"Les autres seront gardés pour le transfert dans C:\Projet\DomainUsers.Csv \"
$user > C:\Projet\DomainUsers.Csv
}
[/code:1]
Connexion ou Créer un compte pour participer à la conversation.
- Philippe
- Hors Ligne
- Modérateur
-
- Messages : 1778
- Remerciements reçus 21
tu a cette option sur get-QADUser :Le truc c'est que je suis toujours un peu bloqué sur la date , j'arrive pas à la selectionner pour la comparer ensuite ( je vais voir le script en haut si j'arrive à m'en servir mdr )
-AccountExpiresBefore <DateTime>
Retrieve user accounts that are configured to expire before a certain date. Parameter value is a DateTime object that specifies the date you want.
un exemple
[code:1]
$jours = (Get-Date).AddDays(-365) # date butoire d'inactif
Get-QADUser -disabled -SearchRoot $OU2 -AccountExpiresBefore $jours
[/code:1]
Connexion ou Créer un compte pour participer à la conversation.
- Dupont
- Auteur du sujet
- Hors Ligne
- Membre senior
-
- Messages : 48
- Remerciements reçus 0
[code:1]
$OU = \"AD2003.lo/Test\" #Mettre AD et OU des utilisateurs à extraire
$OU2 = \"AD2003.lo/Users\"
$date = (Get-Date).AddDays(-3) #Format à changer
$disableAccounts = Get-QADUser -disabled -SearchRoot $OU2
echo $disableAccounts
Write-Host \"Ces utilisateurs seront transférés dans le fichier C:\Projet\disableAccounts.Csv \"
$disableAccounts > C:\Projet\disableAccounts.Csv
#Comptes inactifs à prendre
$users = Get-QADUser -SearchRoot $OU | select SamaccountName,lastLogon,DN
if ( $_.lastLogon -gt $date ) #Condition à corriger sinon le reste est bon
{
Write-Host \"Les utilisateurs ne s'étant pas connectés avant le :\"$date \"seront considérés comme inactifs\"
$users > C:\Projet\inactiveAccounts.Csv
}
elseif ($_.lastLogon -lt $date)
{
Write-Host \"Les autres seront gardés pour le transfert dans C:\Projet\DomainUsers.Csv \"
$users > C:\Projet\DomainUsers.Csv
}
[/code:1]
Connexion ou Créer un compte pour participer à la conversation.
- Philippe
- Hors Ligne
- Modérateur
-
- Messages : 1778
- Remerciements reçus 21
a partir de ton script une facon simple de faire :
[code:1]
$OU = \"AD2003.lo/Test\" #Mettre AD et OU des utilisateurs à extraire
$OU2 = \"AD2003.lo/Users\"
$jour = (Get-Date).AddDays(-365) # date butoire d'inactif
# Tous les utilisateurs desactivés
$disableAccounts = Get-QADUser -disabled -SearchRoot $OU2
$disableAccounts
Write-Host \"Ces utilisateurs seront transférés dans le fichier C:\Projet\disableAccounts.Csv \"
$disableAccounts | export-csv \"C:\Projet\disableAccounts.Csv\"
#Comptes inactifs à prendre
$inactiveAccounts = Get-QADUser -SearchRoot $OU2 | select lastLogon
# Tous les utilisateurs inactifs depuis $jour
Write-Host \"Les utilisateurs ne s'étant pas connectés avant le :\"$jour \"seront considérés comme inactifs\"
$inactiveAccounts2 = Get-QADUser -enabled -SearchRoot $OU2 | Select SamAccountName,lastLogonTimestamp,CN | where {$_.lastlogontimestamp -lt $jour} | select SamAccountName,lastLogonTimestamp,CN
$inactiveAccounts2 | export-csv \"C:\Projet\inactiveAccounts.Csv\"
# Tous les utilisateurs actifs
Write-Host \"Les autres seront gardés pour le transfert dans C:\Projet\DomainUsers.Csv \"
$user = Get-QADUser -enabled -SearchRoot $OU2 | select SamAccountName,lastLogon,CN
$user | export-csv \"C:\Projet\DomainUsers.Csv\"
[/code:1]
le if t'oblige a faire une boucle inutile<br><br>Message édité par: 6ratgus, à: 21/01/15 15:40
Connexion ou Créer un compte pour participer à la conversation.
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Récupérer users inactifs