O script de inicialização do GPO não está sendo executado

5

Não consigo fazer com que um GPO execute um script na inicialização. O script cria uma pasta compartilhada em cada máquina em um grupo de máquinas do Windows 8. O script em si funciona muito bem, mas anexá-lo a um GPO está me causando um problema. Mesmo depois dos comandos gpupdate / force e de várias reinicializações, não consigo executar os scripts.

Veja o que eu sei:

  • O RSOP mostra que o GPO com o script está sendo aplicado
  • O GPResult informa que o script ainda não foi executado (após várias reinicializações)
  • Não há eventos relacionados no aplicativo do computador ou nos logs de eventos do sistema
  • A execução do script por conta própria funciona muito bem
  • Usar o psexec para executar o script usando as credenciais do SYSTEM também funciona
  • Mover os scripts de um compartilhamento de rede para uma pasta local (C: \ GPOFiles \ por exemplo) não causou nenhuma diferença, mas o GPO ainda não executou os scripts.
  • Eu tentei usar outros scripts mais simples apenas para ver se era um problema com o script em questão e eles não executariam
  • Posso executá-lo como um script de logon, mas prefiro aplicá-lo a máquinas, não a usuários, se possível

Não sei como solucionar isso, alguma idéia?

Atenção, eu sou um pouco novo nas políticas de grupo, então é possível que eu tenha perdido algo óbvio.

EDITAR:

Eu também tentei criar os GPOs a partir de uma caixa do Windows 7 e de uma caixa do Windows 8 com os mesmos resultados. Os controladores de domínio são o Windows Server 2008.

Aqui está o script que estou tentando executar. :

    '========================================================================== 
'ShareSetup.vbs 
'========================================================================== 
Option Explicit  
Const FILE_SHARE = 0 
Const MAXIMUM_CONNECTIONS = 25 
Dim strComputer 
Dim objWMIService 
Dim objNewShare 

strComputer = "." 
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\" & strComputer & "\root\cimv2") 
Set objNewShare = objWMIService.Get("Win32_Share") 

Call sharesec ("C:\Shared", "Shared", "Work Center Share", "Domain Users") 


Sub sharesec(Fname,shr,info,account) 'Fname = Folder path, shr = Share name, info = Share Description, account = account or group you are assigning share permissions to 
    Dim FSO 
    Dim Services 
    Dim SecDescClass 
    Dim SecDesc 
    Dim Trustee 
    Dim ACE 
    Dim Share 
    Dim InParam 
    Dim Network 
    Dim FolderName 
    Dim AdminServer 
    Dim ShareName 

    FolderName = Fname 
    AdminServer = "\" & strComputer 
    ShareName = shr 

    Set Services = GetObject("WINMGMTS:{impersonationLevel=impersonate,(Security)}!" & AdminServer & "\ROOT\CIMV2") 
    Set SecDescClass = Services.Get("Win32_SecurityDescriptor") 
    Set SecDesc = SecDescClass.SpawnInstance_() 

    'Set Trustee = Services.Get("Win32_Trustee").SpawnInstance_ 
    'Trustee.Domain = Null 
    'Trustee.Name = "EVERYONE" 
    'Trustee.Properties_.Item("SID") = Array(1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0) 

    Set Trustee = SetGroupTrustee("LM", account) 'Replace ACME with your domain name.  
    'To assign permissions to individual accounts use SetAccountTrustee rather than SetGroupTrustee  

    Set ACE = Services.Get("Win32_Ace").SpawnInstance_ 
    ACE.Properties_.Item("AccessMask") = 2032127 
    ACE.Properties_.Item("AceFlags") = 3 
    ACE.Properties_.Item("AceType") = 0 
    ACE.Properties_.Item("Trustee") = Trustee 
    SecDesc.Properties_.Item("DACL") = Array(ACE) 
    Set Share = Services.Get("Win32_Share") 
    Set InParam = Share.Methods_("Create").InParameters.SpawnInstance_() 
    InParam.Properties_.Item("Access") = SecDesc 
    InParam.Properties_.Item("Description") = "Public Share" 
    InParam.Properties_.Item("Name") = ShareName 
    InParam.Properties_.Item("Path") = FolderName 
    InParam.Properties_.Item("Type") = 0 
    Share.ExecMethod_ "Create", InParam  
End Sub  


Function SetAccountTrustee(strDomain, strName)  
     set objTrustee = getObject("Winmgmts:{impersonationlevel=impersonate}!root/cimv2:Win32_Trustee").Spawninstance_  
     set account = getObject("Winmgmts:{impersonationlevel=impersonate}!root/cimv2:Win32_Account.Name='" & strName & "',Domain='" & strDomain &"'")  
     set accountSID = getObject("Winmgmts:{impersonationlevel=impersonate}!root/cimv2:Win32_SID.SID='" & account.SID &"'")  
     objTrustee.Domain = strDomain  
     objTrustee.Name = strName  
     objTrustee.Properties_.item("SID") = accountSID.BinaryRepresentation  
     set accountSID = nothing  
     set account = nothing  
     set SetAccountTrustee = objTrustee  
End Function  

Pelo que sei, o GPO nem sequer tocou no roteiro. Por uma questão de ciência, eu também tentei o seguinte script e também não foi executado:

Dim oShell
Set oShell = WScript.CreateObject ("WScript.Shell")
oShell.run "subst z: ""C:\Shared"""

Veja como configurei esses scripts para serem executados no GPO:

    
por Adam H. 31.10.2014 / 16:32

1 resposta

0

Isso é um pouco idiota da minha parte, mas descobri o problema. Em vez de reiniciar pelo Windows, eu tocava no botão liga / desliga para desligar a máquina e tocá-la novamente para iniciá-la.

Eu reiniciei o Windows hoje e finalmente comecei a receber erros nos logs do Windows, mostrando-me por que os scripts não estavam sendo executados (vários problemas de conexão WiFi com o controlador de domínio). Depois de alguns problemas (principalmente usando uma conexão Ethernet com fio) e reinicialização adequada, eu consegui executar o script.

    
por 04.11.2014 / 17:32