1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
| $n=0
$v=0
$w=0
$path = "C:\Scripts\List.csv"
$ObjFilter = "(objectClass=Computer)"
$objSearch = New-Object System.DirectoryServices.DirectorySearcher
$objSearch.PageSize = 15000
$objSearch.Filter = $ObjFilter
# Renseignez votre domaine
$objSearch.SearchRoot = "LDAP://OU=OU_test,DC=domain,DC=lan"
$AllObj = $objSearch.FindAll()
# Mise en place de la boucle pour chaque objets computer de votre AD
foreach ($Obj in $AllObj)
{
$objItemT = $Obj.Properties
$Computer = $objItemT.name
# Pour chaque machine un test de connection sur une seconde est effectué
if ( Test-Connection $Computer -count 1 -quiet )
{
# La variable $MembresAdmin est initialisé à chaque passage de la boucle
$MembresAdmin =""
$Connexion = [ADSI]"WinNT://$Computer/Administrateurs,group"
# Ici on recherche dans le groupe administrateur tous les membres en les listant et en excluant les membres redondant avec la commande Where-Object {$_ -notlike "" -and $_ -notlike ""}
$MembresAdmin = $Connexion.psbase.invoke("Members") | %{$_.GetType().InvokeMember("Name",'GetProperty', $null, $_, $null)}| Where-Object {$_ -notlike "admin*" -and $_ -notlike ""}
if ( !$MembresAdmin )
{
Write-host -nonewline "Machine $Computer connectées mais rien d'inhabituel" `n
}
else
{
"$Computer " | Out-File -filepath $path -encoding ASCII -append
"$MembresAdmin
------------" | Out-File -filepath $path -encoding ASCII -append
}
$v++
}
else
{
Write-host -nonewline "Machine $Computer non connectées" `n
$n++
}
}
Write-host "il y a $n machines deconnectées" `n
Write-host "il y a $v machines connectées" `n
$w=$n+$v
Write-Host "Il y a $w machines" |
Partager