Jak získat seznam místních správců na počítačích

V tomto článku se podíváme na to, jak získat seznam uživatelů a skupin, kteří mají práva místního správce na pracovních stanicích a serverech Windows ve vaší síti.

Obsah:

Najděte místní správce v místním počítači

V systému Windows můžete použít modul snap-in Správa počítače (compmgmt.msc), chcete-li zobrazit, přidat nebo odebrat uživatele v místní skupině Administrators. RozšířitSpráva počítače->Místní uživatelé a skupina->Skupiny. Poté vyberteSprávciskupina.

Ve výchozím nastavení, když je počítač se systémem Windows připojen k doméně Active Directory, jsou práva správce udělena uživatelům místního správce a uživatelůmSprávci doménybezpečnostní skupina.

Všichni ostatní uživatelé nebo skupiny jsou přidáni do skupiny Administrators samostatně (manuálně, prostřednictvím zásad skupiny, skriptů atd.).

Seznam členů místní skupiny Administrators pomocí PowerShellu:

Get-LocalGroupMember -Group "Administrators"

Upozorňujeme, že parametr Principal obsahuje zdroj tohoto uživatele/skupiny, což může být místní doména, doména Active Directory nebo Azure AD.

Takto můžete uvést pouze místní uživatele, kteří mají oprávnění správce:

Get-LocalGroupMember Administrators | Where-Object { (Get-LocalUser $_.SID -ErrorAction SilentlyContinue).Enabled }

Seznam můžete filtrovat tak, aby zahrnoval pouze uživatele AD:

Get-LocalGroupMember Administrators | Where-Object {$_.PrincipalSource -eq "ActiveDirectory"} | select PrincipalSource,class,name,SID

Pokud je na vašem počítači nainstalován modul Active Directory for Windows PowerShell z balíčku RSAT, můžete získat další informace o uživatelích nebo skupinách AD podle jejich SID.

V tomto příkladu skript najde členy všech skupin služby Active Directory, kteří jsou místními správci na tomto počítači (tGet-ADGroupMembercmdlet se používá k získání seznamu uživatelů skupiny AD). Poté se Get-ADUser použije k získání SamAccountName a stavu účtu (Enabled= Pravda/nepravda).

$admins=Get-LocalGroupMember Administrators | Where-Object {$_.PrincipalSource -eq "ActiveDirectory"}
Foreach ($admin in $admins)
{
If ($admin.objectclass –eq "User") {get-aduser $admin.sid|select SamAccountName,enabled }
If ($admin.objectclass –eq "Group") {Get-ADGroupMember $admin.sid | foreach { Get-ADUser $_ |Select-Object SamAccountName,enabled }}
}

Podobně můžete získat jakékoli další uživatelské atributy ze služby Active Directory.

Získejte člena skupiny místních správců ze vzdáleného počítače

Výše uvedený příklad získá seznam uživatelů s právy správce na místním počítači. Nyní se podíváme na to, jak získat členy místní skupiny Administrators ze vzdáleného počítače se systémem Windows.

Chcete-li spouštět příkazy na vzdálených počítačích, musíte nakonfigurovat PowerShell Remoting a otevřít port brány firewall TCP 5985. Můžete povolit a nakonfigurovat službu WinRM (PSRemoting) pomocí GPO a poté změnit nastavení zásad skupiny brány Windows Defender Firewall, abyste otevřeli další port.

Pomocí rutiny Invoke-Command PowerShell spusťte příkaz na vzdáleném počítači. Chcete-li zobrazit seznam správců na vzdáleném počítači s názvem wsk-m2211, použijte následující příkaz:

Invoke-Command -ComputerName wsk-m2211 -ScriptBlock {Get-LocalGroupMember -Name 'Administrators'|select Name,ObjectClass,PrincipalSource|ft}

Nyní se podívejme, jak získat seznam správců z více počítačů. Pro usnadnění vyřadíme z výsledků skupinu Domain Admins:

$results = Invoke-Command wsk-m2211,srv-sql01,srv-rds02 -ScriptBlock {Get-LocalGroupMember -Name 'Administrators'|where {$_.name –notlike "*Domain Admins*"}|select Name,ObjectClass,PrincipalSource}
$results | Select-Object PSComputerName,Name,ObjectClass,PrincipalSource

Doporučené čtení:Jak uvolnit místo na disku na počítačích Mac a Windows

Z výsledků můžete vyloučit vestavěného správce nebo jiné účty.

Pomocí příkazu Export-CSV exportujte výsledný seznam uživatelů a skupin do souboru CSV:

$results | Export-CSV "C:PSadmins.CSV" -NoTypeInformation -Encoding UTF8

Můžete se dotazovat na více počítačů nebo serverů z domény současně. V tomto příkladu chci získat seznam správců na všech hostitelích Windows Server v AD. Použijte rutinu Get-ADComputer k zobrazení seznamu povolených počítačů se systémem Windows Server ve službě Active Directory:

$computers = (Get-ADComputer -Filter 'operatingsystem -like "*Windows server*" -and enabled -eq "true"').Name

Dále získejte seznam členů místní skupiny Administrators na každém hostiteli:

$results = Invoke-Command -ComputerName $computers -ScriptBlock {Get-LocalGroupMember -Name 'Administrators'|where {$_.name –notlike "*Domain Admins*"}|select Name,ObjectClass,PrincipalSource} -ErrorAction SilentlyContinue

Odebrání uživatelů ze skupiny Local Administrators

Podnikoví administrátoři musí mít přehled o členech místní skupiny Administrators na počítačích v doméně. Hlavní myšlenkou je minimalizovat počet uživatelů s právy místního správce.

K automatickému přidávání uživatelů do místní skupiny Administrators se doporučuje použít Předvolby zásad skupiny nebo Omezené skupiny. Tyto GPO automaticky přidají požadované uživatele do skupiny Administrators a vyloučí všechny ostatní uživatele (kteří jsou přidáni ručně).

Uživatele můžete ručně odebrat ze skupiny místních administrátorů pomocí příkazu:

Remove-LocalGroupMember -Group Administrators -Member username

Uživatele můžete odebrat ze skupiny na vzdáleném počítači:

Invoke-Command -ComputerName wsk-m2211 –ScriptBlock {Remove-LocalGroupMember -Group Administrators -Member username}

Existuje však pokročilejší metoda, kterou můžete použít. Předpokládejme, že jste vytvořili seznam uživatelů s administrátorskými právy na počítačích a uložili jej do proměnné $results.

$results = Invoke-Command wsk-m2211,wsk-m2233 -ScriptBlock {Get-LocalGroupMember -Name 'Administrators'|where {$_.name –notlike “*Domain Admins*”}|select Name,ObjectClass,PrincipalSource,SID}

Poté zobrazte seznam uživatelů a počítačů ve formě seznamu Out-GridView:

$principals_to_remove=$results | Out-GridView -Title "Select principal to remove from local admins" -OutputMode Multiple

Další věc, kterou musíte udělat, je vybrat uživatele, které chcete odebrat ze skupiny Administrators (stiskněte a podržteCTRLvyberte více řádků v tabulce) a spusťte kód:

foreach ($principal in $principals_to_remove)
{
Invoke-Command $principal.PSComputerName -ScriptBlock {Remove-LocalGroupMember -Group Administrators -Member $using:principal.name}
}

Poznámka. The$using:principal.namekonstrukt vám umožňuje předat hodnotu lokální proměnné z vašeho počítače do vzdálené relace PSRemoting.

Tímto odeberete uživatele, které jste vybrali, z místní skupiny Administrators na vzdálených počítačích.

Related Posts