Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst Aufruf einer CMD aus einem VBScript läuft nicht sauber

Mitglied: derhoeppi

derhoeppi (Level 2) - Jetzt verbinden

31.01.2014 um 12:06 Uhr, 1836 Aufrufe, 8 Kommentare

Hallo Leute,

ich habe ein VBScript, das ein vorhandenes Batch-Skript aufrufen soll. Für den Aufruf der CMD habe ich folgende Zeile eingefügt.

CALL wshShell.Run("Datei.cmd", 1, True)

Diese Zeile wird im Skript aufgerufen, so dass mein Batch-Skript gestartet wird. Leider startet dieses Skript nicht korrekt bzw. wird nicht bis zum Ende ausgeführt.

Die Batch-Datei enthält folgende Zeilen:

query session >session.txt
for /f "skip=1 tokens=3," %%i in (session.txt) DO msg %%i /Time 60 /V Test
timeout 60
for /f "skip=1 tokens=3," %%a in (session.txt) DO Andere Anweisung

Wenn ich die Batch selber mit einem Rechtsklick RunAsAdministrator ausführe, funktioniert sie einwandfrei. Wenn die Batch aus der VBS aufgerufen wird, läuft Sie bis zur Zeile timeout 60 und beginnt anschließend wieder die erste for Schleife. Woran liegt es und wie kann ich es lösen oder umgehen?

Gruß
derhoeppi
Mitglied: colinardo
31.01.2014, aktualisiert um 13:14 Uhr
Hallo derhoeppi:
01.
Set objShell = CreateObject("Wscript.Shell")
02.
objShell.Run "cmd.exe /c C:\Datei.cmd", 1, True
dann solltest du das VB-Script auch als Admin starten wenn dies für das Batch-Script nötig ist.
runas /user:Administrator "cscript.exe //NOLOGO deinScript.vbs"
Grüße Uwe
Bitte warten ..
Mitglied: derhoeppi
31.01.2014 um 16:50 Uhr
Hallo Uwe,

das ganze soll als Scheduled Task laufen und wird derzeit über die wscript.exe aufgerufen. Ich habe deinen Run Befehl übernommen und dennoch beginnt die erste Schleife nach dem Timeout erneut, obwohl diese bereits außerhalb der Schleife ist.

Gruß
derhoeppi
Bitte warten ..
Mitglied: colinardo
31.01.2014 um 17:13 Uhr
mir ist schleierhaft wieso deine Batch überhaupt funktioniert, wenn ich meine Ausgabe von query session betrachte gibt dein Befehl nicht Usernamen aus, sondern den Status. Und dann läuft in deiner Schleife natürlich noch der Befehl MSG der bei nicht Erreichbarkeit des Users jeweils 60 Sekunden wartet...

Wenn deine Batch so läuft (wie auch immer) dann ist der Task falsch eingestellt, bzw. ein falscher Useraccount im Task angegeben, oder das Häkchen bei Mit höchsten Privilegien ausführen nicht gesetzt. Oder der angegebene User hat keine Rechte in den Ordner zu schreiben in dem die Batch ausgeführt wird. Leite die Datei session.txt also mal in ein Verzeichnis um in dem der angegebene Useraccount im Task die entsprechenden Schreibrechte hat...

Grüße Uwe
Bitte warten ..
Mitglied: derhoeppi
01.02.2014 um 18:06 Uhr
Hallo Uwe,
der Task läuft als System-Benutzer. Damit sollten / sind die Berechtigungen in Ordnung - session.txt wird erstellt. Im Task ist ebenfalls der Haken bei "Mit höchsten Privilegien ausführen" gesetzt. Meine Session.txt liest die Sitzungen korrekt aus. Aufbau der Spalten: SITZUNGSNAME, BENUTZERNAME, ID, STATUS, TYP, GERÄT. Durch die Tokens=3 soll eigentlich die ID verwendet werden, aber bei der Session Service z.B. gibt es keinen Benutzernamen, so dass die dritte Spalte leider der Status ist. Für meine belange - Abmelden aller angemeldeten Benutzer habe ich damit jedoch kein Problem.

Wenn ich für das VBS und das Batch-Skript jeweils einen separate Scheduled Tasks erstelle werden beide zu meiner Zufriedenheit ausgeführt. Mein Problem ist jedoch das in der VBS eine Bedingung geprüft wird, die bei derer Erfüllung nur den Logoff ausführt und damit das Batch-Skript aufruft.

Gruß
derhoeppi
Bitte warten ..
Mitglied: derhoeppi
05.02.2014 um 10:30 Uhr
Hallo Uwe,

ich möchte das ganze nun weiter umbauen, so dass ich komplett in VBS bleibe.

strComputer = "."
Set objWMI = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" _
& strComputer & "\root\cimv2")
Set colSessions = objWMI.ExecQuery _
("Select * from Win32_LogonSession Where LogonType = 10 or LogonType = 2")

For Each objSession in colSessions
Set colList = objWMI.ExecQuery("Associators of " _
& "{Win32_LogonSession.LogonId=" & objSession.LogonId & "} " _
& "Where AssocClass=Win32_LoggedOnUser Role=Dependent" )
WScript.Echo "LogonID: " & objSession.LogonID
For Each objItem in colList
WScript.Echo "Username: " & objItem.Name & " FullName: " & objItem.FullName
Next
Next

Mein Problem ist nun das ich als User auf einem System via RDP angemeldet bin. Ich habe mich gewundert, dass mir 4 LogonID's zurückgemeldet werden. Wenn ich mir dazu wie in dem Skript den Benutzernamen ausgeben lasse, sind die 4 LogonID's alle meinem Benutzer zugeordnet. Hast du einen Tipp wie ich in der colSession bereits nach dem Usernamen filtern kann, so dass ich als Ergebnis jeden User nur einmal erhalte?

Gruß
derhoeppi
Bitte warten ..
Mitglied: colinardo
05.02.2014, aktualisiert um 12:55 Uhr
Hi,
LogonType reicht wenn dieser auf 10 steht. Dieser beinhaltet bereits interaktive Logon-Sessions (http://msdn.microsoft.com/en-us/library/aa394189%28v=vs.85%29.aspx)
"Select * from Win32_LogonSession Where LogonType = 10"
Es sei aber darauf hingewiesen das die Queries auf neueren Systemen eventuell gecachte Sessions beinhalten können, und es deshalb zu doppelten Namen kommt.
Für eine zuverlässigere Abfrage ist hier die Klasse Win32_LoggedOnUser besser geeignet oder das u.s. Script.
Powershell:

Wenn du bei VBS bleiben willst:
01.
strComputer = "."   
02.
Set objWMI = GetObject("winmgmts:" _ 
03.
              & "{impersonationLevel=impersonate}!\\" _ 
04.
              & strComputer & "\root\cimv2") 
05.

06.
Set colExplorers = objWMI.ExecQuery _ 
07.
    ("Select * from Win32_Process Where Name = 'explorer.exe'") 
08.

09.
If colExplorers.Count > 0 Then  
10.
   For Each proc In colExplorers
11.
   		colProperties = proc.GetOwner(strNameOfUser,strUserDomain)
12.
   		MsgBox strUserDomain & "\" & strNameOfUser
13.
   Next 
14.
End If
Grüße Uwe
Bitte warten ..
Mitglied: derhoeppi
05.02.2014 um 12:58 Uhr
Hallo Uwe,
ich habe mir mal die Klasse Win32_LoggedOnUser angesehen. Über diese Klasse beziehe ich bereits in meinem Skript den Benutzernamen. Wenn ich jedoch aus dieser Klasse alle Informationen beziehen möchte, erhalte ich auch mehrere Sessions, so dass ich ebenfalls einen Benutzer mehrmals erhalte.

Gruß
derhoeppi
Bitte warten ..
Mitglied: colinardo
05.02.2014, aktualisiert um 13:03 Uhr
mach so wie oben geschrieben ...
Es sei aber darauf hingewiesen das die Queries auf neueren Systemen eventuell gecachte Sessions beinhalten können, und es deshalb zu doppelten Namen kommt.
Grüße Uwe
Bitte warten ..
Ähnliche Inhalte
Windows Server
Ps1 Script lauft nicht
gelöst Frage von 131455Windows Server8 Kommentare

Hallo, führe ich Zeilen wie würde die eben als Aufgabenplanung gerne hinterlegen. Gruss Rainer

Hardware

Rechner bringt kein Bild, Lüfter lauft extrem laut

gelöst Frage von Sil3nz3rHardware8 Kommentare

Hallo liebe Admins, Da ich auf Google nichts finden konnte, hoffe ich ihr könnt mir helfen. Ich habe seit ...

Microsoft Office

Outlook VBScript

gelöst Frage von NebellichtMicrosoft Office5 Kommentare

Hallo, seit ein paar Wochen werden keine VBScripte hinter den (Benutzerspezifschen) Outlook Formularen ausgeführt. Hat jemand eine Lösung parat ...

Java

Aufruf der web.xml

gelöst Frage von qwertz1Java3 Kommentare

Hallo, ich habe einen Server, der diverse Java-Servlets hat. Habe nur http-Zugriff auf diesen Server. Die Servlets kann man ...

Neue Wissensbeiträge
Humor (lol)
Preisvertipper
Information von Dilbert-MD vor 11 StundenHumor (lol)6 Kommentare

Moin! weil heute Freitag ist, zeige ich Euch den Preisvertipper der Woche: vergesst den Acer Predator 21x, der ist ...

Windows Update
Sicherheitsupdate für SQL Server 2014 SP3
Information von sabines vor 1 TagWindows Update2 Kommentare

Für den SQL Server 2014 existiert ein Sicherheitsupdate. Laut KB Artikel wird es als CU3 angezeigt: Server 2014 SP3 ...

Backup

Veeam Agent für MS Windows - neue Version verfügbar (bedingt jedoch offenbar .NET Framework 4.6)

Information von VGem-e vor 2 TagenBackup1 Kommentar

Moin Kollegen, einer unserer Server zeigte grad an, dass für o.g. Software ein Update verfügbar ist. Ob ein evtl. ...

Python

Sie meinen es ja nur gut - Microsoft hilft python-Entwicklern auf unnachahmliche Weise

Information von DerWoWusste vor 4 TagenPython2 Kommentare

Stellt Euch vor, Ihr nutzt python unter Windows 10 und skriptet damit regelmäßig Dinge. Nach dem Update auf Windows ...

Heiß diskutierte Inhalte
Windows Update
WSUS - erforderlich Updates
Frage von emeriksWindows Update24 Kommentare

Hi, ein gängiges Verfahren, welche Updates man am WSUS-Server genehmigen soll und welche nicht, beruft sich darauf, dass man ...

Netzwerkgrundlagen
Neue Serverumgebung von 0 aufbauen
Frage von JacareNetzwerkgrundlagen20 Kommentare

Hallo zusammen, ich bin noch nicht lange hier und weiß nicht, ob meine Frage daher etwas ungewöhnlich ist. Ich ...

Off Topic
Installationskosten Verkabelung
Frage von Xaero1982Off Topic14 Kommentare

Moin Zusammen, ich bräuchte mal ein paar Meinungen, weil ich mir da gerade echt nicht ganz sicher bin. Ich ...

LAN, WAN, Wireless
Ich möchte mein Heimnetz umbauen. Welches ist die beste Variante?
Frage von s.burgerLAN, WAN, Wireless13 Kommentare

Schönen guten Tag liebe Admin-Community, ich wollte schon seit geraumer Zeit mein Heimnetzwerk etwas aufräumen und wollte euch um ...