Windows-Server-2008

GPO 啟動腳本不復製文件

  • June 8, 2012

我創建了一個 GPO 啟動腳本來為特定 AD 容器中的電腦執行。該腳本從 AD netlogon 共享中獲取一個文件,並將其放在電腦上的一個目錄中。給定正確的權限(即:我自己)可以很好地執行腳本並複製文件。但它在啟動時不起作用 - 文件不會從 AD 伺服器複製過來。

啟動腳本應該作為本地系統執行(對嗎?)。所以問題是為什麼文件在啟動時不複製?會不會是因為:

  • 是本地系統使用者的權限嗎?
  • 啟動時讀取系統資料庫有問題?
  • 啟動時從 AD netlogon 文件夾獲取文件有問題?
  • 我完全想念它嗎?

我的測試機器確實具有腳本中描述的系統資料庫項和本地目錄。我自己在測試機器上擁有標準使用者權限。AD 伺服器是 Windows 2008,測試客戶端是 Windows XP SP3(很快就會是 Windows 7,我認為權限問題將是不可避免的)

`Dim wShell, fso, oraHome, tnsHome, key, srcDir

Set wShell = WScript.CreateObject(“WScript.Shell”)

Set fso = CreateObject(“Scripting.FileSystemObject”)

key = “HKLM\Software\Oracle\Oracle_Home”

On Error Resume Next

orahome = wShell.RegRead(key)

If err.Number = 0 Then

tnsHome = oraHome + “" + “network\admin"

srcDir = wShell.ExpandEnvironmentStrings("%logonserver%”) + “\netlogon\UpdatedFiles"

fso.CopyFile srcDir + “file1.ext”, tnsHome, true

End If`

旁注:為了確保腳本正確部署,我特意在腳本中放了一些錯誤,並且在下次啟動時出現錯誤消息。所以我知道 GPO 部署正確。

在本地系統帳戶下執行,腳本將使用 AD 電腦帳戶(即 COMPUTERNAME$)連接到網路。

但是,%logonserver% 變數在系統帳戶的上下文中可能無效 - 在所有本地系統帳戶都通過本地電腦而不是域進行身份驗證之後。%logonserver% 變數可以為空,或等於本地電腦名稱。

嘗試\\domain.name\NETLOGON改用。這將連接到域控制器(並且由於 NETLOGON 共享包含所有 DC 上的相同文件,因為它使用 FRS,因此與您交談的 DC 無關緊要。

引用自:https://serverfault.com/questions/196036