![用户注销后完全删除终端服务器上的漫游配置文件](https://linux22.com/image/613048/%E7%94%A8%E6%88%B7%E6%B3%A8%E9%94%80%E5%90%8E%E5%AE%8C%E5%85%A8%E5%88%A0%E9%99%A4%E7%BB%88%E7%AB%AF%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A%E7%9A%84%E6%BC%AB%E6%B8%B8%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6.png)
我们在终端服务器(运行 Win2k8)上使用漫游配置文件。有时,需要删除其中一些配置文件,例如由于损坏或测试某些内容。它们仅存储首选设置(例如应用程序中显示的视图),不存储用户数据。当然,我们只能在受影响的用户注销时删除配置文件。不过,我们希望能够随时删除配置文件。
是否可以配置当用户注销时配置文件不会在配置文件服务器上更新,而是删除?这应该只发生一次,因此当他再次登录时,将创建一个新的配置文件。或者,如果服务器配置文件立即被删除并且更新过程被阻止一次,那也是可以的。
或者换句话说:我们如何确保特定用户在登录时会收到一份新的、干净的个人资料仅限下一次?
答案1
虽然有一个“防止漫游配置文件更改传播到服务器”GPO 设置来自“计算机配置\管理模板\系统\用户配置文件”这改变了“只读配置文件”价值HKLM\软件\策略\微软\Windows\系统regkey,它是针对每台机器的配置设置,对所有登录到终端服务器的用户有效,因此可能不受欢迎。另外,我不确定它是否会影响已登录用户的配置文件。
我相信实现你想要的目标的唯一方法是通过脚本。
- 解析文件以获取要删除的用户配置文件列表
- 遍历此列表
- 检查用户是否已登录
- 如果不是,请删除她的漫游配置文件和本地副本
- 等待一段时间再继续
- 转至 1。
这看起来很简单,甚至可以编写为 CMD 批处理脚本,但显然使用 PowerShell 会产生更优雅、更有弹性的代码。
答案2
创建一个新的 GPO 对象,并将其链接到用户(或计算机)的 OU。
Computer Configuration => Policies => Administrative Templates => System/User Profiles => Delete cached copies of roaming profiles == Enabled
这在过去对我很有用。
答案3
将此脚本设置为 powershell“注销”脚本,您需要确保用户在“ProfileList”注册表文件夹上具有正确的权限。(我们的用户没有)
本质上,它所做的是在注销过程中将配置文件状态更改为“128”,即访客帐户,并在注销时删除其配置文件。
只需将其复制并粘贴为 powershell 脚本即可
$SID = ([Security.Principal.WindowsIdentity]::GetCurrent()).User.Value Set-ItemProperty -path "HKLM:\Software\Microsoft\Windows NT\CurrentVersion\ProfileList\$SID\" -name State -value 128
当您拥有像 SKYPE 这样的应用程序不允许强制配置文件或没有权限写入证书存储的访客帐户时,这非常方便。