我是一个程序员,试图pipe理一个小公司的Active Directory设置。 域控制器正在运行Windows Small Business Server 2008。
我们有一名使用平板电脑的现场工作人员; 平板电脑ThinkVantage英美公司的configuration问题将要求这些用户在使用平板电脑时拥有pipe理员权限。 没关系的 – 当我通过电话修复他们时,他们有广泛的权限是很有用的,所以我不想在那里寻找解决办法。
我想使用组策略设置以下情形:在特定安全组(或组织单位)中的计算机上login时,特定安全组(或组织单位)中的用户应该在BUILTIN / Administrators组中。 如果计算机必须位于OU中,那么可以,但我更愿意按组来分配用户。
当然,外地工作人员不应该是其他工作站上的pipe理员,香草办公室工作人员不应该是平板电脑上的pipe理员。
目前,这是在每台平板电脑上进行本地pipe理,但是随着我们添加新员工,这变得更加麻烦。
我觉得受限制群体就是这里的答案,但是在AD概念和方法上没有坚实的基础,我很难做到这一点。
这个任务的适当技术是什么,我将如何去执行它?
创build一个组来封装用户(Local-Admins-Tablets)并将它们添加到这个组中
创build当前工作站OU的子OU,并将这些平板电脑放在此处(Workstations \ Tablets)
创build一个GPO(Local-Admins-Tablets-Policy)并将其链接到Workstations \ Tablets OU
在GPO中,设置以下内容:
重新启动电脑,完成。
请记住,设置受限制的组将覆盖机器现有的本地pipe理员列表。 如果您已经有其他用户/组,则还需要将其添加到此策略中。 其他的例子是myDomain \ Domain Admins等
编辑:哦,并更改GPO上的筛选,并添加域计算机 。 最简单的方法就是使用组策略pipe理MMCpipe理单元(可以从Microsoft的远程服务器pipe理工具中获得)
如果你不关心pipe理员组将被有效地locking在本地机器未来的变化之外,Izzy的答案是好的。 在应用策略设置之前,这也将清除已经是pipe理员组成员的任何组。
但是,您可以稍微不同的方式使用相同的策略设置来绕过这些烦恼(假设您甚至认为它们是烦人的)。
这两个部分的工作方式是微妙但重要的差异。 这个小组的成员实际上是“A组将只包含X,Y和Z组”。 这个小组是有效地成为“确定小组是X,Y和Z的成员”的成员。
一旦你设置了这个组的成员的策略,唯一可以修改组成员的成员是一个压倒一切的策略对象,也使用这个组的成员或任何其他策略使用这个组是成员 。
看起来您真正需要做的就是创build一个组策略,将域组添加到本地pipe理员组。 使用简单的启动脚本或者使用组策略首选项可以很容易地完成。
简单的启动脚本添加组成员。
DomainName="example" Set oShell = WScript.CreateObject("WScript.Shell") Set oProcsEnv = oShell.Environment("Process") ComputerName = oProcsEnv("COMPUTERNAME") Set oGroup = GetObject("WinNT://" & ComputerName & "/" & "Administrators") If Not oGroup.IsMember("WinNT://"&DomainName&"/_Group_Tablet_Admins") Then _ oGroup.Add ("WinNT://"&DomainName&"/_Group_Tablet_Admins")
列出的解决scheme唯一的问题是,它将本地pipe理员权限授予适用该策略的所有机器。 通常情况下,您只想将pipe理权限授予特定的机器。 我所观察到的是,当用户意识到他们有本地pipe理权限时,他们会为所有的配偶安装软件。
有很多不同的方法可以做到这一点,但我可能只是build议一个。 因此,完成上述步骤,但也为用户需要额外权限的每台计算机创build一个组。 每个“计算机组”都被添加到myDomain \ Local-Admins组中。
然后将用户添加到与他们需要访问的计算机相对应的组中。
所以他们是一个pipe理员,但只有那台机器。
你说增加新雇员是一件麻烦的事,但是不应该增加新的麻烦事吗?
我会沿着这些路线做一些事情:
拥有一个域安全组,其中包含应该是平板电脑pipe理员(即TabletAdministrators)的所有用户。
在每台平板电脑上,将该组添加到pipe理员组。
不pipe这是否正确,我不知道。 这只是我如何实现的第一个想法。
我编写了一个脚本,作为一个在本地工作站上具有pipe理权限的计算机策略运行。 它检查AD中最后login的用户的描述,域pipe理员可以从“活动目录用户和计算机”中设置它,如果它包含工作站名称,则脚本将用户添加到本地pipe理员组,如果工作站名称不在用户的说明,它将从本地pipe理员组中删除用户。 说明可以包含多个计算机名称,如下所示:
用户的描述:“WKST-E445R和WKST-VM398上的本地pipe理员”
所以要在一台机器上让某人成为本地pipe理员,我只需要将这台计算机的名称添加到AD的用户描述中,并要求用户重新启动 ,并且删除计算机的名称将删除本地pipe理员权限。
这不是最好的解决scheme吗? 🙂
这是脚本:
@if "%debug%" neq "%username%" echo off set ver=MakeLocalAdmin.cmd henrik@commor 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