web-dev-qa-db-ja.com

GPO起動スクリプトが実行されていません

起動時にスクリプトを実行するGPO=を取得できません。スクリプトは、Windows 8マシンのグループの各マシンに共有フォルダーを作成します。スクリプト自体はうまく機能しますが、 a GPOで問題が発生します。gpupdate/ forceコマンドと数回の再起動の後でも、スクリプトを実行できません。

これが私が知っていることです:

  • RSOPは、スクリプトを使用したGPOが適用されていることを示しています。
  • GPResultは、スクリプトがまだ実行されていないことを示しています(数回の再起動後)。
  • コンピューターのアプリケーションまたはシステムイベントログに関連するイベントがありません
  • 単独でスクリプトを実行するとうまくいきます
  • Psexecを使用して、SYSTEM資格情報を使用してスクリプトを実行することもできます
  • スクリプトをネットワーク共有からローカルフォルダー(C:\ GPOFiles \など)に移動しても違いはなく、GPOはまだスクリプトを実行しませんでした。
  • それが問題のスクリプトの問題であり、それらも実行されないかどうかを確認するために、他のより単純なスクリプトを使用してみました
  • ログオンスクリプトとして実行できますが、可能であれば、ユーザーではなくマシンに適用します

これをトラブルシューティングする方法がわからない、アイデアがありますか?

ヘッドアップ、私はグループポリシーにいくらか新しいので、明らかなことを逃した可能性があります。

編集:

また、windows 7ボックスとwindows 8ボックスの両方からGPOを作成しようとしましたが、同じ結果が得られました。ドメインコントローラーはWindows Server 2008です。

これが、実行しようとしているスクリプトです。 :

    '========================================================================== 
'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  

私の知る限りでは、GPOはスクリプトに触れていません。科学のために、次のスクリプトも試してみましたが、実行されませんでした。

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

これらは、GPOで実行するようにこれらのスクリプトを構成する方法です。 enter image description here

6
Adam H.

これは私には少しばかげていますが、問題を発見しました。 Windowsから再起動する代わりに、電源ボタンを押してマシンをシャットダウンし、もう一度タップして起動します。

今日Windowsを介して再起動し、スクリプトが実行されなかった理由を示すWindowsログでエラーが発生し始めました(ドメインコントローラーへのWiFi接続に関するその他の問題)。トラブルシューティング(主に有線イーサネット接続を使用)と適切な再起動の後、スクリプトを実行しました。

1
Adam H.