Всем привет.
По причинам удаленной работы и популярности VPN время от времени наблюдаем как ряд локальных(или доменных) учетных записей вносятся в члены локальных групп администраторов или пользователей удаленного стола конкретного хоста. Со временем они забываются и там остаются, даже если необходимость в них отпадает. Это небезопасно. Поэтому, как минимум, надо провести аудит их наличия на хостах.
Используем для этого Powershell. Итак, выберем членов соответствующих групп у которых PrincipalSource указано Local, что говорит от том учетная запись именно локальная.
Get-LocalGroupMember -Name Administrators | where -Property PrincipalSource -eq Local
Get-LocalGroupMember -Name "Remote Desktop Users"
или так:
Get-LocalGroupMember -Name Администраторы | where -Property PrincipalSource -eq Local
Get-LocalGroupMember -Name "Пользователи удаленного рабочего стола"
Get-LocalUser | Select -Property Name,Enabled,LastLogon,Description
Если в выводе Get-LocalGroupMember мы получаем в поле PrincipalSource значение ActiveDirectory то уточняем учетные записи пользователей как, например, для группы WS-Local-Admins:
Get-ADGroupMember 'WS-Local-Admins' | Select name | Sort name
Такой запрос хорошо работает локально. Для аудита локальных пользователей на удаленном компьютере нужно сначала подключится к нему через WinRM командлетами Invoke-Command или Enter-PSSession. Например, так можно собрать список учетных записей в локальной группе на удаленных хостах:
$UserCredential = Get-Credential
$S = New-PSSession -CN pc01,pc02,pc03 -Credential $UserCredential
Invoke-Command -scriptblock {Get-LocalGroupMember -Name "Remote Desktop Users"} -session $s -hidecomputername |
select * -exclude RunspaceID | Out-Gridview -title "Remote Desktop Users"
или так:
Invoke-Command -FilePath .\list.ps1 -session $s -hidecomputername | select * -exclude RunspaceID | Out-Gridview -title "Local Admins"
где list.ps1 содержит:
Get-LocalGroupMember -Name Administrators | where -Property PrincipalSource -eq Local
Get-LocalGroupMember -Name "Remote Desktop Users"
Get-LocalUser | Select -Property Name,Enabled,LastLogon,Description
Успехов.