有没有一种方法可以刷新计算机组成员身份而无需重新启动?


17

我正在使用Windows Server 2008 R2,并且在计算机ComputerA的“网络服务”帐户下运行Windows服务。该Windows服务希望访问共享文件夹(在另一台计算机ComputerB上),该共享文件夹将读取权限授予组GroupA。因此,我需要将ComputerA的计算机帐户添加到GroupA并重新启动ComputerA。

我的问题是:有没有一种方法可以让组成员身份立即生效而无需重新启动ComputerA?

Answers:


24
For Windows 2008 and higher:

psexec -s -i -d cmd.exe

C:\Windows\system32>whoami
nt authority\system

-- List the session 0 tickets (0x3e7 is the machine session 0)
klist -lh 0 -li 0x3e7  

-- Purge the session 0 tickets  
klist -lh 0 -li 0x3e7 purge  

Should display:  

Current LogonId is 0:0x3e7  
        Deleting all tickets:  
        Ticket(s) purged!  

PSExec是从Microsoft免费下载的SysInternals。


为了消除任何混乱,此过程绝对会刷新计算机的组成员身份,并允许将适用于安全组的组策略现在应用于计算机,而无需重新启动计算机。已在Windows Server 2012 R2和Windows Server 2008 R2以及通用安全组上进行了测试和验证。简短的版本是:

  • psexec -s -i -d cmd.exe
  • klist tgt (查看当前票证,记下大小。还要注意,由于您是作为系统运行的,因此当前登录ID为0x3e7)
  • 将计算机添加到安全组。(允许复制的时间,如果适用)
  • klist purge
  • nltest /dsgetdc:domain.com (运行此命令或将连接到网络资源并强制执行TGT请求的任何其他命令)
  • klist tgt (查看当前票证,注意大小。应该稍大一些。请注意,whoami / groups不会反映新的成员资格)

此时,可能会退出系统命令提示符。

  • gpupdate /force
  • gpresult /h gpresult.html

查看gpreport,它现在应该显示已应用组策略。


我可以确认这仅适用于Server 2012 R2和Server 2016
KellCOMnet

在Windows Server 2012 R2上对我不起作用(对于成员服务器,DC,域和林功能级别均如此):我可以清除Kerberos票证,但从未获得新组(klist tgt大小未更改或未whoami /groups反映新组) 。我已经检查了该组的更改是否已通过所有DC复制。
curropar

好吧,按照shellandco.net/blog/2016/07/07/…的规定,我发现这些检查都没有反映新的成员资格,但实际上是适用的。我的情况是这样:我现在可以根据新组执行操作了,谢谢!
curropar

2

我认为重新标记netlogon服务会做同样的事情,不确定会带来什么整体影响。可以肯定的是,用户会暂时断开用户连接。


对于Windows 7工作站,这是无需重启的解决方案
321X 2012年

以我的经验,重新启动服务对组成员身份没有影响。
PHLiGHT

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.