ADS

Visualizzazione post con etichetta script. Mostra tutti i post
Visualizzazione post con etichetta script. Mostra tutti i post

giovedì 20 novembre 2025

Script per la ricerca di PC con SID duplicati

Ho realizzato, con l'aiuto di Perplexity, uno script per cercare tutti i PC con SID locali duplicati all'interno di un dominio Windows Server 2025. Chiaramente vanno sistemati i percorsi dei file ed eseguito rigorosamente come utente Amministratore di dominio.

Ecco lo script:

# Percorso completo di PsGetSid.exe - By Marco Mira

$psGetSidPath = ".\PsGetSid.exe"


# Importa modulo Active Directory

Import-Module ActiveDirectory


# Ottieni lista nomi computer dominio

$computers = Get-ADComputer -Filter * | Select-Object -ExpandProperty Name


# Array per risultati

$result = @()


foreach ($computer in $computers) {

    # Verifica raggiungibilità con ping

    $pingable = Test-Connection -ComputerName $computer -Count 1 -Quiet


    if (-not $pingable) {

        $sid = "NON raggiungibile"

    } else {

        try {

            # Esegui PsGetSid e cattura output come stringa

            $outputRaw = & $psGetSidPath "\\$computer" 2>&1 | Out-String


            # Dividi output in righe

            $outputLines = $outputRaw -split '\r?\n'


            # Trova la riga con "SID for" e prendi la riga successiva se presente e non vuota

            $sid = $null

            for ($i = 0; $i -lt $outputLines.Count; $i++) {

                if ($outputLines[$i] -match "SID for") {

                    if ($i + 1 -lt $outputLines.Count -and $outputLines[$i+1].Trim() -ne '') {

                        $sid = $outputLines[$i+1].Trim()

                        break

                    }

                }

            }


            if (-not $sid) {

                $sid = "SID non trovato"

            }

        } catch {

            $sid = "Errore durante il comando"

        }

    }


    # Pulisce output da eventuali spazi indesiderati

    $sidClean = $sid.Trim()


    # Scrive a schermo nome computer e SID pulito

    Write-Output "$computer - $sidClean"


    # Aggiungi al report

    $result += [PSCustomObject]@{

        ComputerName = $computer

        LocalSID = $sidClean

    }

}


# Esporta risultati in CSV (modifica se serve percorso)

$result | Select-Object ComputerName, LocalSID | Export-Csv -Path .\LocalSIDs_Report.csv -NoTypeInformation


Write-Host "`nReport creato: LocalSIDs_Report.csv"

Copialo ed incollalo in un file PS1 che consiglio di eseguire da PowerShell ISE come amministratore.