Site Overlay

Extraire les comptes d’administrateur local des appareils du domaine avec Powershell

Extraire
les comptes d’administrateur local des appareils du domaine avec Powershell Après avoir configuré la commande suivante en fonction de la structure de votre domaine, enregistrez-la au format .ps1 à l’aide du bloc-notes.

Exécutez l’application PowerShell en mode administrateur et exécutez le code que nous avons préparé avec l’extension .ps1.

<#
. SYNOPSIS
    .
. DESCRIPTION
    Ce script trouvera les administrateurs locaux des ordinateurs clients dans votre
    et les mettra en même temps que le fichier CSV dans le répertoire actuel.

. CHEMIN PARAMETER
    Il s’agit du nom unique de l’unité d’organisation ou de l’étendue de recherche. Copiez simplement le DN de l’unité d’organisation
    dans lequel vous souhaitez rechercher des administrateurs locaux. S’il n’est pas défini, l’ensemble
    sera considéré comme une étendue de recherche.

. PARAMETER Nom_ordinateur
    Ce paramètre définit le compte d’ordinateur dans lequel la fonction
    courir à nouveau. S’ils ne sont pas spécifiés, tous les ordinateurs seront considérés comme des moteurs de recherche
    et par conséquent cette fonction obtiendra des administrateurs locaux de tous 
    Ordinateurs. Vous pouvez définir plusieurs ordinateurs à l’aide de virgules (,).

. EXEMPLE
    C:PS> Get-LocalAdminToCsv
    
Cette commande obtiendra les administrateurs locaux de tous les ordinateurs du domaine.

    C:PS> Get-LocalAdminToCsv -ComputerName PC1,PC2,PC3

Cette commande obtiendra les administrateurs locaux de PC1, PC2 et PC3.

    C:PS> Get-LocalAdminToCsv -Path « OU=Computers,DC=Contoso,DC=com »

. NOTES
    Auteur: Mahdi Tehrani
    Date : 18 février 2017   
#>

Répertoire actif du module d’importation
# Hôte clair
fonction Get-LocalAdminToCsv {
    Param(
            $Path=(Get-ADDomain). Nom distingué,   
            $ComputerName= (Get-ADComputer -Filter * -Server(Get-ADDomain). DNsroot -SearchBase $Path -Propriétés activées | Objet-where {$_. Activé -eq « True"})
         )

commencer{
        [tableau]$Table = $null
        $Counter = 0
         }
    
processus
       {
    $Date = Get-Date -Format MM_dd_yyyy_HH_mm_ss
    $FolderName = « LocalAdminsReport(« + $Date + « ) »
    New-Item -Path « .$FolderName » -ItemType Directory -Force | Out-Null

foreach($Computer en $ComputerName)
        {
            Essayer
            {
                $PC = $Computer Get-ADComputer
                $Name = PC.Name $
                $CountPC = @($ComputerName).count
            }

Catch
            {
                Write-Host « Impossible de récupérer l’ordinateur $Computer » -ForegroundColor Yellow -BackgroundColor Red
                Add-Content -Path « .$FolderNameErrorLog.txt » « $Name »
                continuer
            }

finalement
            {
                $Counter++
            }

Write-Progress -Activity « Connecting PC $Counter/$CountPC " -Status « Querying ($Name) » -PercentComplete (($Counter/$CountPC) * 100)

Essayer
            {
                $row = $null
                $members=[ADSI]"WinNT://$Name/Administrateurs »
                $members = @($members.psbase.Invoke(« Membres »))
                $members | foreach {
                            $User = $_. GetType(). InvokeMember(« Name », 'GetProperty', $null, $_, $null)
                                    $row += $User
                                    $row += " ; "
                                    }
                write-host « L’ordinateur ($Name) a été interrogé et exporté. » -ForegroundColor Green -BackgroundColor noir 
                
$obj = New-Object -TypeName PSObject -Property @{
                                « Nom » = $Name
                                « LocalAdmins » = $Row
                                                    }
                $Table += $obj
            }

Catch
            {
            Write-Host « Erreur d’accès ($Name) » -ForegroundColor Yellow -BackgroundColor Red
            Add-Content -Path « .$FolderNameErrorLog.txt » « $Name »
            }

}
        Essayer
        {
            $Table | | de nom de tri Sélectionnez Nom,LocalAdmins | Export-Csv -path « .$FolderNameReport.csv » -Append -NoTypeInformation
        }
        Catch
        {
            Avertissement d’écriture $_
        }
    }

fin{}
   }
    
Get-localAdmintoCSV

image 3
Arif Akyüz Producteur de contenu Expert en cybersécurité

Arif Akyüz
Producteur de contenu et expert en
cybersécurité [email protected]