ローカルワークステーションの管理者権限を持つコンピューターポリシーとして実行するスクリプトを作成しました。ワークステーション名が含まれている場合、ドメイン管理者が「Active Directoryユーザーとコンピューター」から設定できるADの最後にログオンしたユーザーの説明を確認し、ワークステーション名がローカル管理グループにない場合、スクリプトはユーザーをローカル管理グループに追加しますユーザーの説明、ローカル管理グループからユーザーを削除します。説明には、次のように複数のコンピューター名を含めることができます。
ユーザーの説明:「WKST-E445RおよびWKST-VM398のローカル管理者」
だから誰かを1台のマシンだけでローカル管理者にするには、このコンピューターの名前を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