Sök igenom alla GPO'er efter de som sätter "Logon as a service" och missar att lägga till default

NT Service\All Services skall finnas med på alla system för att vissa funktioner skall fungera.

 

# Define the file path to save the results
$CSVFilePath = "C:\UserPath\GPO_Result.txt"

# Get forest information
$MyForest = Get-ADDomain | select -ExpandProperty forest

# Get all GPOs in the Active Directory
$GPOs = Get-GPO -All

# Initialize an empty array to store GPOs that set the "SeServiceLogonRight"
$FilteredGPOs = @()

# Loop through each GPO
foreach ($GPO in $GPOs) 
{
    write-host "Checking: "$gpo.displayname
    $GPOSettings = $null
    # Look for SeServiceLogonRight in GPO
    $GPOSettings = Get-GPOReport -Name $GPO.DisplayName -ReportType Xml | Select-String "SeServiceLogonRight"

    # Does "SeServiceLogonRight" exist in this GPO
    if ($GPOSettings -ne $null)
    {
        # search for correct user rights
        $users = $null
        $users = gc "\\$MyForest\SYSVOL\$MyForest\Policies\{$($GPO.id)}\Machine\Microsoft\Windows NT\SecEdit\GptTmpl.inf" | Select-String "SeServiceLogonRight"
        If($users -notlike "*S-1-5-80-0*")
        {
            write-host "Missing NT Services\All Services " $GPO.displayname -foregroundcolor red
            # Add the GPO to the filtered GPOs array
            $FilteredGPOs += $GPO
        }
    }
}

# Export the filtered GPOs to a CSV file
$FilteredGPOs | Select-Object DisplayName, Id | Export-Csv -Path $CSVFilePath -NoTypeInformation

# Display a confirmation message
Write-Host "Filtered GPOs have been exported to $CSVFilePath"