Announcement

Collapse
No announcement yet.

ErrorCode von VBScript nach Bat-Datei

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • ErrorCode von VBScript nach Bat-Datei

    Hallo!

    Folgende VBScript-Datei:

    Code:
    Option Explicit
    
    Main
    
    Sub Main
    
    	Dim objShell, objWMIService, servSpooler, objReg, objShellApp, result, oShell
    	Dim whoami, strWhoamiOutput, whoamiOutput
    
    	Const PrinterPort = "NUL:"
    	Const HKLM = &h80000002
    
    	If Not WScript.Arguments.Named.Exists("elevate") Then
    
    		Set objShellApp = CreateObject("Shell.Application")
    		objShellApp.ShellExecute WScript.FullName, WScript.ScriptFullName & " /elevate", "", "runas", 0
    		WScript.Quit 'Dieses errorlevel bekommt die batch
    		WScript.Echo("Done 1")
    
    	Else
    
    		Set oShell = CreateObject("WScript.Shell")
    		Set whoami = oShell.Exec("whoami /groups")
    		Set whoamiOutput = whoami.StdOut
    		strWhoamiOutput = whoamiOutput.ReadAll
    
    		If InStr(1, strWhoamiOutput, "S-1-16-12288", vbTextCompare) Then
    			Wscript.Echo("ADMIN")
    
    			WScript.Echo("Port")
    			Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
    			set servSpooler = objWMIService.Get("Win32_Service.Name='spooler'")
    			Set objReg = GetObject("winmgmts:root\default:StdRegProv")
    
    			servSpooler.StopService
    			
    			objReg.SetStringValue HKLM, "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Ports", PrinterPort, ""
    			
    			servSpooler.StartService
    
    			WScript.Quit 1
    
    		End if
    		WScript.Echo("Done 2")
    
    	End If
    	WScript.Echo("Done 3")
    
    End Sub
    In der bat-Datei steht:

    Code:
    @echo off
    cscript //nologo "test.vbs"
    ECHO %errorlevel%
    PAUSE
    %errorlevel% gibt immer das aus, was beim ersten WScript.Quit steht (hier also 0), obwohl der Code ansonsten ordnungsgemäß ausgeführt wird.

    Hat da jemand ne Idee? Ich muss das errorlevel abfangen, das beim zweiten WScript.Quit steht, hier also 1.

  • #2
    Deine Main-Methode muss einen (Integer) Wert zurückgeben

    http://msdn.microsoft.com/de-de/library/ms235406.aspx
    Zuletzt editiert von Christian Marquardt; 14.05.2014, 18:03.
    Christian

    Comment


    • #3
      Hallo Christian!

      danke für deine Antwort, aber in dem Link geht es ja um VB.NET und nicht um VBScript. Wenn ich aus meinem Code oben das Main, Sub Main und End Sub entferne, wird trotzdem der errorcode des ersten WScript.Echo zurückgegeben...

      Comment

      Working...
      X