Ada*_* H. 6 group-policy startup-scripts
我无法获得 GPO 在启动时运行脚本。该脚本在一组 Windows 8 机器中的每台机器上创建一个共享文件夹。脚本本身运行良好,但将其附加到 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
Run Code Online (Sandbox Code Playgroud)
据我所知,GPO 甚至没有触及脚本。为了科学起见,我还尝试了以下脚本,但也没有运行:
Dim oShell
Set oShell = WScript.CreateObject ("WScript.Shell")
oShell.run "subst z: ""C:\Shared"""
Run Code Online (Sandbox Code Playgroud)
以下是我如何配置这些脚本以在 GPO 中运行:
这对我来说有点愚蠢,但我发现了这个问题。我不是通过 Windows 重新启动,而是点击电源按钮关闭机器,然后再次点击它启动它。
我今天通过 Windows 重新启动,最后开始在 Windows 日志中收到错误,显示为什么脚本没有运行(域控制器的其他 WiFi 连接问题)。经过一些故障排除(主要通过使用有线以太网连接)并正确重新启动后,我运行了脚本。
归档时间: |
|
查看次数: |
23021 次 |
最近记录: |