[英]VBScript Error “Permission Denied” But Works Anyway
我在我的GPO中有一個VBScript設置作為登錄腳本。 我遇到一個問題,它每次在登錄時運行時,都會出現“拒絕訪問”的信息:
set lf = fso.opentextfile(lfp, 2, true)
興趣點:
我在這里茫然。 這是代碼的相關部分(請原諒任何不良的編碼做法):
'notify robocopy log file location
function seelog(log)
lf.writeline "[" & now & "] " & "See log file for details: " & log
end function
'process robocopy exit codes and write log
function writeerrors(items)
docs = items(0)
retcode = items(1)
logfile = items(2)
if docs = "c" then
name = "some stuff"
else
name = "some other stuff"
end if
If retcode = 0 Then
lf.writeline "[" & now & "] " & name & " folder was already up to date."
elseif retcode = 1 then
lf.writeline "[" & now & "] " & name & " folder was updated."
seelog(logfile)
else
lf.writeline "[" & now & "] " & name & " folder update exited with robocopy error code: " & retcode
seelog(logfile)
End If
end function
'get logged in user
un = CreateObject("WScript.Network").UserName
'check for logfile, and if not exist, create
'folder1 always exists, no need to check or create
lfp = "c:\folder1\folder2\folder3\logfile1.log"
ld1 = "c:\folder1\folder2"
ld2 = "c:\folder1\folder2\folder3"
set fso = createobject("scripting.filesystemobject")
if not fso.fileexists(lfp) then
if not fso.folderexists(ld1) then
fso.createfolder(ld1)
end if
if not fso.folderexists(ld2) then
fso.createfolder(ld2)
end if
set cf = fso.createtextfile(lfp)
cf.close
end if
'open logfile (lfp variable)
'for writing (2)
'overwrite if already exists (true)
wscript.sleep 30000
'************permission denied happens on next line on lfp var*************
Set lf = fso.OpenTextFile(lfp, 2, True)
lf.writeline "[" & now & "] " & "Script started."
lf.writeline "[" & now & "] " & "Logged in user: " & un
lf.writeline "[" & now & "] " & "========================================================="
more code writing to log file and executing robocopy....
我想抑制所有錯誤是一種選擇,但是1)我寧願不這樣做,2)我不清楚如何在VBScript中完成該操作。
ETA:
On Error Resume Next
Set lf = fso.OpenTextFile(lfp, 2, True)
On Error Goto 0
我對此進行了測試,但它確實破壞了腳本。 由於該錯誤未設置lf,因此以下各行均出現錯誤,如預期的那樣,出現了“ object required“ lf””代碼800a01a8。
On Error Resume Next
將忽略該錯誤,然后On Error Goto 0
將重新打開常規錯誤處理
我不喜歡這樣做,但是我的解決方法是從.bat中啟動.vbs(個人喜好-我喜歡將一項工作中的所有內容保留在一個腳本中,因此將來不必去追逐文件周圍)。
我在我的GPO中放置了一個logon.bat文件作為登錄腳本。
@echo off
echo Launching update script...
cscript c:\folder1\script.vbs
這似乎可以解決我遇到的(顯然是錯誤的)權限問題。 我仍然很好奇是否有人可以確切地告訴我為什么我看到自己的行為。 當調用僅管理員用戶可以訪問的OpenTextFile(直接從GPO啟動時)時,腳本引擎是否會寫到臨時位置?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.