2015-11-03 128 views
0

我希望對問題有所幫助我運行了一個從vbs登錄腳本調用的批處理文件。我不經常這樣做。從登錄腳本中運行批處理不起作用

的情景:拷貝一個小的配置文件,誰在某AD組屬於自己的本地機器上,其程序文件(x86)的文件夾的用戶,從目錄%LOGONSERVER%\ SYSVOL \ ad.company .org \ scripts \ companyname \ country \ site;此外,VBS登錄腳本所在的位置(實際上,它是登錄腳本的一部分,但特定於站點並處理驅動器映射)以及ASCII配置文件。很簡單。

AD組的測試不成問題。問題是我有VBS腳本中的條件測試組成員資格,如果是true,我使用Wscript.shell來運行我的批處理,這不過是設置robocopy將配置文件複製到用戶的本地PC,但它不運行。我可以從測試用戶的PC手動運行批處理,沒問題。

我的VBScript看起來像這樣(請注意,ADHelper是從主登錄腳本使用的對象,我知道它的工作原理):

Call updatePTP 

    Sub updatePTP 

    dim objShell 
    set objShell = CreateObject("WScript.Shell") 

    If ADHelper.IsCurrentUserMember("AD_Group-Name") Then 
    objShell.Run("%logonserver%\sysvol\ad.company.org\scripts\companyname\country\site\test.cmd") 
    End If 

    Set objShell = Nothing 

End Sub 

我也試着從NETLOGON代替SYSVOL引用


我的批處理看起來是這樣的:

robocopy %source% %destination% %filename% 

我想這大概有我不太瞭解從用戶PC上的登錄服務器上運行批處理或程序的事情,但我已經看過一些不再使用的舊腳本(但是請保留)我基本上模仿我在那裏找到的東西......腳本和批處理本身很容易理解。

感謝您的任何見解。

回答

1

試試這個

Strlogonserver= CreateObject("WScript.Shell").ExpandEnvironmentStrings("%logonserver%") 
If ADHelper.IsCurrentUserMember("AD_Group-Name") Then 
    objShell.Run(Strlogonserver & "\sysvol\ad.company.org\scripts\companyname\country\site\test.cmd") 
    End If 

你不能在VB中的字符串中使用的系統環境變量。事先展開