GPOにログオンスクリプトとしてVBScriptセットアップがあります。関心のVBScriptエラー「アクセス許可が拒否されました」しかし、とにかく動作
set lf = fso.opentextfile(lfp, 2, true)
ポイント:エラーが発生しても
- 、スクリプトが正常に完了し、私はそれがログオン時に実行されるたびに、私はライン上で権限拒否を取得する問題を抱えています。
- 手動で実行すると、スクリプトはエラーなく実行されます。
- lfp変数がc:\ folder \ folder \ file.logを指しています。ファイルは(必要に応じて)作成され、適切に配置されます(存在する場合は、予想どおりに上書きされます)。
- ファイルが作成された場合、opentextfileを実行する前にfsoが閉じられます。
- ログインしたユーザーには、継承された認証済みユーザーアクセス許可(c:\ folder1から - 以下を参照)を介して存在する場合、パスと置き換えられるファイルに対する変更アクセス権があります。
- その行の直前にwscript.sleep 30000をスローすると、拒否されたアクセス権をスローするのに30秒待つだけです。
- ユーザーがPC上のローカル管理者グループのメンバである場合、エラーは発生しません。ユーザーがローカル管理者でない場合も、エラーは発生しますが、正常に完了します。
- 私はここに途方に暮れてるのWindows 7と10
の両方で同じ動作を参照してください。ここでは、コードの適切なセクションには、(任意の貧弱なコーディングの練習を言い訳してください)です。
'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"' code 800a01a8と期待通りにエラーアウトします。私が好き -
私のETAのように見えます。私が間違っているなら、私に知らせてください。 – lightwing