로컬 워크 스테이션에서 관리 권한이있는 컴퓨터 정책으로 실행되는 스크립트를 작성했습니다. 워크 스테이션 이름이 포함 된 경우 도메인 관리자가 "Active Directory 사용자 및 컴퓨터"에서 설정할 수있는 AD에서 마지막으로 로그온 한 사용자의 설명을 확인합니다. 워크 스테이션 이름이없는 경우 스크립트는 사용자를 로컬 관리자 그룹에 추가합니다. 사용자 설명, 로컬 관리자 그룹에서 사용자를 제거합니다. 설명에는 다음과 같은 컴퓨터 이름이 두 개 이상 포함될 수 있습니다.
사용자 설명 : "WKST-E445R 및 WKST-VM398의 로컬 관리자"
따라서 한 컴퓨터에서 누군가를 로컬 관리자로 만들려면 AD의 사용자 설명에이 컴퓨터의 이름을 추가하고 사용자에게 재부팅하도록 요청하면됩니다 . 컴퓨터 이름을 제거하면 로컬 관리자 권한이 제거됩니다.
가장 적은 해결책이 아닌가? :-)
스크립트는 다음과 같습니다.
@if "%debug%" neq "%username%" echo off
set ver=MakeLocalAdmin.cmd henrik@c o m m o r e.se 20150423
:: Adds last logged on domain user to local Administrators group if run by computer GPO with Administrative rights and the user's Comment contains Computername
set log=nul
:: or set log=c:\logs\MakeLocalAdmins.txt
:: Check who was last logged on user
FOR /F "tokens=3 delims= " %%G in ('reg query "hklm\SOFTWARE\Microsoft\Windows\CurrentVersion\Authentication\LogonUI" /v LastLoggedOnUser') DO (
set DomainAndUserName=%%G)
:: Remove the spaces
set DomainAndUserName=%DomainAndUserName: =%
:: Get only username part
set LastLoggedOnUserName=%DomainAndUserName:*\=%
:: Check OS language, so we can adapt to localized name of Admin group and Comment
FOR /F "tokens=3 delims= " %%G in ('reg query "hklm\system\controlset001\control\nls\language" /v Installlanguage') DO (
set Language=%%G)
echo %date% %Time% ; %0 ; %computername%; %LastLoggedOnUserName%; %DomainAndUserName%, %Language% >> %log%
goto %Language%
:: Add any langauage specific part below, but if an unknown install language is found,
:: an error 'label not found' should mean script terminates, but anyway make sure it terminates.
goto end
:0409
:: English
net user /domain %LastLoggedOnUserName% | find "Comment " | find "%computername%" >> %log%
set NoLocalAdmin=%errorlevel%
if %NoLocalAdmin% equ 0 net localgroup Administrators /add "%DomainAndUserName%" >> %log%
if %NoLocalAdmin% equ 1 net localgroup Administrators /del "%DomainAndUserName%" >> %log%
goto end
:041D
:: Swedish
:: †„” åäö (Swedish char's)
net user /domain %LastLoggedOnUserName% | find "Kommentar " | find "%computername%" >> %log%
set NoLocalAdmin=%errorlevel%
if %NoLocalAdmin% equ 0 net localgroup Administrat”rer /add "%DomainAndUserName%" >> %log%
if %NoLocalAdmin% equ 1 net localgroup Administrat”rer /del "%DomainAndUserName%" >> %log%
goto end
:end