Problème:
Après une migration de domaine réalisée à l'aide d'ADMT les utilisateurs reçoivent un ACCESS DENIED lors de l'utilisation de Gpresult.exe.
Problème cosmétique, la commande se déroule pourtant correctement.
En lançant à distance l'outil rsop.msc, 2 SID sont proposés pour le même utilisateur.
Explication:
Le problème survient du fait que sous le namespace root\RSOP\Users, l'ensemble des SID des utilisateurs qui se sont logués sur la station et qui ont par conséquent eu des GPO appliquées sont stockés sous ce namespace.
Lors du gpresult, celui ci fait une requête WMI et tente de récupérer les informations de l'utilisateur. Il subsiste le SID de l'utilisateur avant migration et gpresult s'enmêle alors les pinceaux, même si à priori les permissions semblent correctement positionnées.
Résolution:
Pour remédier à ce problème, il suffit de supprimer toutes les entrées "SID" sous le namespace root\RSOP\Users à l'aide du script ci dessous.
Ces entrées seront dynamiquement recréées lorsque les GPO se réappliqueront à un utilisateur logué, elles peuvent donc être supprimer sans impact.
-------------------- RepairWMI.vbs ---------------------
strComputer = "."
Call EnumNameSpaces("root\RSOP\user")
Sub EnumNameSpaces(strNameSpace)
'WScript.Echo strNameSpace
Set objWMIService=GetObject _
("winmgmts:{impersonationLevel=impersonate}\\" & _
strComputer & "\" & strNameSpace)
Set colNameSpaces = objWMIService.InstancesOf("__NAMESPACE")
For Each objNameSpace In colNameSpaces
if ( Instr(objNameSpace.Name,"S_1_5_21")) Then
wscript.echo "Suppression de " & objNameSpace.Name
strPath = _
"winmgmts:\root\RSOP\user:__Namespace.Name='" & objNameSpace.Name & "'"
GetObject(strPath).Delete_
Else
Call EnumNameSpaces(strNameSpace & "\" & objNameSpace.Name)
End If
Next
End Sub
--------------------------------------------------------------