我需要静默启动或停止服务,但我无法正确记录信息。
以下是我写的VBScript中的代码。
Dim oFso,oShell,iRet,sLine,sLogName,sLogDir,sDesc,sMasterLog,oMasterLog
Set oFso = CreateObject("Scripting.FileSystemObject")
Set oShell = CreateObject("WScript.Shell")
StartService "ServiceName"
Sub CheckReturn(iRet)
If iRet = 0 Then
Log "Operation completed successfully."
Else
Dim sDesc :: sDesc = Err.Description
Log "Operation failed. Return Code: " & iRet & " Description: " & sDesc
End If
End Sub
Sub StartService(sName)
Log "Starting task " & sName
If (InStr(sName, " ") <> 0) AND (Left(sName, 1) <> chr(34)) Then sName = Chr(34) & sName & Chr(34)
iRet = oShell.Run("cmd.exe /c net start " & sName, 0, True)
CheckReturn iRet
End Sub
Sub Log(sLine)
On Error Resume Next
If Session.Property("ProductCode") = "" Then
sLogDir = "" & sLogDir
sLogName = "" & sLogName
If sLogDir = "" Then sLogDir = oFso.GetParentFolderName(WScript.ScriptFullName)
If Not oFso.FolderExists(sLogDir) Then
oShell.Run "cmd.exe /c MD """ & sLogDir & """", 0, True
If Not oFso.FolderExists(sLogDir) Then
sLogDir = oShell.ExpandEnvironmentStrings("%TEMP%")
End If
End If
If sLogName = "" Then sLogName = Left(WScript.ScriptName, Len(WScript.ScriptName) - 4) & "_Master_" & Replace(Replace(Replace(Now, " ", "_"), ":", "."), "/", ".") & ".log"
sMasterLog = sLogDir & "\" & sLogName
Set oMasterLog = oFso.OpenTextFile(sMasterLog, 8, True)
Err.Clear
oMasterLog.WriteLine Now & " : " & sLine
oMasterLog.Close
If Err.Number <> 0 Then WScript.Quit
oMasterLog.Close
Set oMasterLog = Nothing
Else
Dim oRec
Set oRec = Session.Installer.CreateRecord(1)
oRec.StringData(1) = Now & " : " & sLine
Session.Message &H04000000, oRec
End If
End Sub
&#13;
当我尝试启动像Fax这样的服务时,它会在我的机器中失败,但它没有正确记录信息。
当我尝试在命令提示符下运行时。我正在获取信息
**指传真服务正在启动。无法启动传真服务。
该服务未报告错误。
输入NET HELPMSG 3534即可获得更多帮助。**
但是当我通过查看%errorlevel%的值来检查VBS或者提交提示中的错误代码时,它给出了2而不是3534。
请帮我详细说明如何正确写入日志文件以启动或停止服务。
答案 0 :(得分:0)
运行return%ERRORLEVEL%。
“Exec和Run之间的主要区别在于Exec支持向用户的实时输出(如果它是命令行程序),但我们无法使用此方法获得ERRORLEVEL。”
它给2而不是3534。
2是%ERRORLEVEL%