Files
AD-Tools/Find-EmptySecurityGroups.ps1
2024-10-20 12:34:25 +02:00

61 lines
2.1 KiB
PowerShell

<#
.SYNOPSIS
Tento skript vypíše všechny bezpečnostní skupiny v Active Directory, které nemají žádné členy.
.DESCRIPTION
Tento PowerShell skript využívá Active Directory cmdlety pro získání seznamu všech bezpečnostních skupin a následně kontroluje, zda skupiny neobsahují členy.
Pokud skupina nemá žádné členy, její název bude vypsán do konzole.
.PARAMETER None
Skript nevyžaduje žádné vstupní parametry.
.EXAMPLE
.\Find-EmptySecurityGroups.ps1
Skript zobrazí všechny prázdné bezpečnostní skupiny v Active Directory.
.EXAMPLE
.\Find-EmptySecurityGroups.ps1 | Export-Csv -Path .\Export_EmptySecurityGroups.csv -NoTypeInformation -Encoding UTF8
Export všechn prázdných bezpečnostních skupiny v Active Directory do CSV.
.NOTES
Autor: Petr Štěpán
Datum vytvoření: 20.10.2024
Verze: 1.0
.LINK
https://git.totalservice.cz/public/AD-Tools
#>
# Vyžaduje modul Active Directory
Import-Module ActiveDirectory
# Inicializace prázdného pole pro ukládání prázdných skupin
$emptyGroups = @()
# Inicializace počátečního stavu progress baru
$counter = 0
# Získání všech bezpečnostních skupin v Active Directory
$securityGroups = Get-ADGroup -Filter {GroupCategory -eq 'Security'}
# Procházení každé skupiny a kontrola, zda nemá žádné členy
foreach ($group in $securityGroups) {
$counter++
Write-Progress -Activity "Kontrola skupiny $($Group.Name)" -Status "Zpracovávám $counter z $($securityGroups.Count)" -PercentComplete (($counter / $securityGroups.Count) * 100)
$members = Get-ADGroupMember -Identity $group.DistinguishedName -ErrorAction SilentlyContinue
if ($members.Count -eq 0) {
# Uložení informace o prázdné skupině do PSCustomObject
$emptyGroups += [PSCustomObject]@{
GroupName = $group.Name
CanonicalName = $group.CanonicalName
DistinguishedName = $group.DistinguishedName
}
}
}
# Pokud existují prázdné skupiny, vypište je
if ($emptyGroups.Count -gt 0) {
$emptyGroups
} else {
Write-Host "Žádné prázdné bezpečnostní skupiny nebyly nalezeny."
}