在用户注销后,完全删除terminal服务器上的漫游configuration文件

我们在terminal服务器上使用漫游configuration文件(运行Win2k8)。 偶尔,有必要删除其中的一些,例如由于腐败或testing某些东西。 它们仅存储首选设置(例如应用程序中显示的视图),不存储用户数据。 当然,我们只能在受影响的用户注销时删除configuration文件。 不过,我们希望能够随时删除configuration文件。

是否可以configuration用户注销时configuration文件服务器上没有更新configuration文件,而是删除? 这应该只发生一次,所以当他再次login时,将创build一个新的configuration文件。 或者,如果服务器configuration文件将被立即删除并且更新过程被阻止一次,那也可以。

或者换句话说:我们如何才能确保一个特定的用户只有在下一次login时才能得到一个新的,干净的configuration文件?

当从“计算机configuration\pipe理模板\系统\用户configuration文件”中更改HKLM \ Software \ Policies \ Microsoft \ Windows \ System中“ReadOnlyProfile”值时, “阻止漫游configuration文件更改从传播到服务器” GPO设置regkey,这是针对login到terminal服务器的所有用户有效的每台机器configuration设置,因此可能不合需要。 另外,我不确定是否会影响已经login的用户的configuration文件。

我相信唯一可以通过脚本实现你想要的方法。

  1. parsing文件以查看要删除的用户configuration文件列表
  2. 遍历这个列表
    1. 检查用户是否login
    2. 如果没有,则删除她的漫游configuration文件和本地副本
  3. 等待一段时间后再继续
  4. 去1。

这看起来很简单,甚至可以作为一个CMD批处理脚本,但显然使用PowerShell将产生更优雅和弹性的代码。

创build一个新的GPO对象,并将其链接到用户(或计算机)的OU。

Computer Configuration => Policies => Administrative Templates => System/User Profiles => Delete cached copies of roaming profiles == Enabled 

这在过去对我有效。

将此脚本设置为PowerShell“注销”脚本,您需要确保用户在“ProfileList”registry文件夹上具有适当的权限。 (我们的用户没有)

基本上它是在注销过程中将configuration文件状态更改为“128”,这是来宾帐户,并在注销时对其进行configuration。

只需复制并粘贴这个PowerShell脚本

$ SID =([Security.Principal.WindowsIdentity] :: GetCurrent())。User.Value Set-ItemProperty -path“HKLM:\ Software \ Microsoft \ Windows NT \ CurrentVersion \ ProfileList \ $ SID \”-name State -value 128

当你有像SKYPE这样的应用程序不允许pipe理configuration文件或没有权限写入到证书存储的客户帐户时,这非常方便。