起動時にスクリプトを実行するGPO=を取得できません。スクリプトは、Windows 8マシンのグループの各マシンに共有フォルダーを作成します。スクリプト自体はうまく機能しますが、 a GPOで問題が発生します。gpupdate/ forceコマンドと数回の再起動の後でも、スクリプトを実行できません。
これが私が知っていることです:
これをトラブルシューティングする方法がわからない、アイデアがありますか?
ヘッドアップ、私はグループポリシーにいくらか新しいので、明らかなことを逃した可能性があります。
編集:
また、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で実行するようにこれらのスクリプトを構成する方法です。
これは私には少しばかげていますが、問題を発見しました。 Windowsから再起動する代わりに、電源ボタンを押してマシンをシャットダウンし、もう一度タップして起動します。
今日Windowsを介して再起動し、スクリプトが実行されなかった理由を示すWindowsログでエラーが発生し始めました(ドメインコントローラーへのWiFi接続に関するその他の問題)。トラブルシューティング(主に有線イーサネット接続を使用)と適切な再起動の後、スクリプトを実行しました。