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

VBS: lokale Dienste verwalten mittels VBS

Mitglied: Yannosch

Yannosch (Level 2) - Jetzt verbinden

07.10.2013 um 10:45 Uhr, 2371 Aufrufe, 11 Kommentare

Guten Tag liebe Community!

Ist einer von euch hier Anwesenden im Wissen wie man folgendes mittels VBS realisieren könnte? ...

~Alle laufenden Dienste des Systems anzeigen.
~Alle nichtlaufenden Dienste des Systems anzeigen.
~Einen nichtlaufenden Dienst starten.
~Einen laufenden Dienst anhalten.

Leichte Denkanstöße würden mir schon weiterhelfen
Sind die Dienste mittels WMI abrufbar, oder irre ich mich da ? ...

Liebe Grüße von
Y@nnosch!
Mitglied: Bitboy
07.10.2013 um 10:51 Uhr
Hi,

einfaches googlen bringt folgenden Treffer zutage: http://msdn.microsoft.com/en-us/library/aa394602(v=vs.85).aspx
Bitte warten ..
Mitglied: Yannosch
07.10.2013 um 13:03 Uhr
Danke für die schnelle Antwort ! ,

habe jetzt etwas entwickelt , was aber noch Fehler produziert ! Ich will in einer MsgBox alle laufenden Dienste und in einer anderen MsgBox alle nichtlaufenden Dienst angezeigt bekommen...

Ein Beispiel für die Liste der laufenden Dienste :



Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
Set colListOfServices = objWMIService.ExecQuery("Select * from Win32_Service Where State = Running")
For Each objItem in colListOfServices
If objServices.Name <> "" Then
allServices = allServices & objServices.Name & vbNewLine
End If


Next

MsgBox "Dies sind alle laufenden Dienste: " & vbnewline & allServices

In diesem Script soll sich wohl laut WSH in Zeile drei der Fehler verstecken ...
Bitte warten ..
Mitglied: colinardo
07.10.2013 um 13:22 Uhr
da waren ja auch ein paar Fehler drin:
so gehts ...
01.
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
02.
Set colListOfServices = objWMIService.ExecQuery("Select * from Win32_Service Where State = 'Running'")
03.
For Each objItem in colListOfServices
04.
	If objItem.Name <> "" Then
05.
		allServices = allServices & objItem.Name & vbNewLine
06.
	End If
07.
Next
08.
MsgBox "Dies sind alle laufenden Dienste: " & vbnewline & allServices
Grüße Uwe
Bitte warten ..
Mitglied: Yannosch
07.10.2013 um 14:04 Uhr
Perfekt, genau das was ich wollte :D .... aber kann man in die MsgBox so ne art "Scrollbar" einbauen ... Die MsgBox ist so lange das ich sie nicht mal mehr auf einen Bildschirm bekomme :D

Liebe Grüße und 1000 Dank an alle beteiligten von
Y@annosch !
Bitte warten ..
Mitglied: Yannosch
07.10.2013 um 14:36 Uhr
Oder vielleicht einfach die Liste anders darstellen [mittels Array]

Dienst 1 Dienst 2 Dienst 3
Dienst 4 Dienst 5 Dienst 6
Dienst 7 Dienst 8 Dienst 9


-> Dann würde alles Dargestellt werden können ...
Bitte warten ..
Mitglied: colinardo
07.10.2013 um 18:24 Uhr
dann machs halt einfach mit einem Trennzeichen:
01.
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
02.
Set colListOfServices = objWMIService.ExecQuery("Select * from Win32_Service Where State = 'Running'")
03.
For Each objItem in colListOfServices
04.
	If objItem.Name <> "" Then
05.
		allServices = allServices & objItem.Name & " # "
06.
	End If
07.
Next
08.
MsgBox "Dies sind alle laufenden Dienste: " & vbnewline & allServices
ansonsten hast du via Powershell wesentlich mehr Möglichkeiten mit Windows Forms:
01.
function GenerateForm($sText) {
02.

03.
#region Import the Assemblies
04.
[reflection.assembly]::loadwithpartialname("System.Windows.Forms") | Out-Null
05.
[reflection.assembly]::loadwithpartialname("System.Drawing") | Out-Null
06.
#endregion
07.

08.
#region Generated Form Objects
09.
$form1 = New-Object System.Windows.Forms.Form
10.
$textBox1 = New-Object System.Windows.Forms.TextBox
11.
$InitialFormWindowState = New-Object System.Windows.Forms.FormWindowState
12.
#endregion Generated Form Objects
13.

14.
$System_Drawing_Size = New-Object System.Drawing.Size
15.
$System_Drawing_Size.Height = 276
16.
$System_Drawing_Size.Width = 362
17.
$form1.ClientSize = $System_Drawing_Size
18.
$form1.DataBindings.DefaultDataSourceUpdateMode = 0
19.
$form1.MaximizeBox = $False
20.
$form1.MinimizeBox = $False
21.
$form1.Name = "form1"
22.
$form1.Text = "Running Processes"
23.

24.
$textBox1.Anchor = 15
25.
$textBox1.DataBindings.DefaultDataSourceUpdateMode = 0
26.
$System_Drawing_Point = New-Object System.Drawing.Point
27.
$System_Drawing_Point.X = 12
28.
$System_Drawing_Point.Y = 12
29.
$textBox1.Location = $System_Drawing_Point
30.
$textBox1.Multiline = $True
31.
$textBox1.Name = "textBox1"
32.
$textBox1.ReadOnly = $True
33.
$textBox1.ScrollBars = 2
34.
$System_Drawing_Size = New-Object System.Drawing.Size
35.
$System_Drawing_Size.Height = 252
36.
$System_Drawing_Size.Width = 338
37.
$textBox1.Size = $System_Drawing_Size
38.
$textBox1.TabIndex = 0
39.
$textBox1.text = $sText
40.

41.
$form1.Controls.Add($textBox1)
42.

43.
#Save the initial state of the form
44.
$InitialFormWindowState = $form1.WindowState
45.
#Init the OnLoad event to correct the initial state of the form
46.
$form1.add_Load($OnLoadForm_StateCorrection)
47.
#Show the Form
48.
$form1.ShowDialog()| Out-Null
49.

50.
} #End Function
51.

52.
$runningServices = Get-Service | ?{$_.Status -eq "Running"} | %{"$($_.Name)`r`n"}
53.
GenerateForm $runningServices
Grüße Uwe
Bitte warten ..
Mitglied: Yannosch
08.10.2013, aktualisiert um 07:11 Uhr
Hey Uwe , vielen lieben Dank für die fixe und auch so umfangreiche Antwort ... klappt alles prima, bis auf die Sache mit der Textbox ... irgendwie zeigt sie mir trotz des Trennzeichens " | " nicht alles an ... es scheint so alsob die MsgBox "vollgelaufen" wäre ... also es wird beispielsweise nur bis zu den Diensten mit "s" vorne gegangen... wenn ich dann das Trennzeichen weglasse dann siehts zwar bisschen komisch aus , ABER es werden die Dienste beispielsweise auch bis "w" angezeigt .... Kann die MsgBox nur begrenzt Inhalt haben ? .... Haber darüber nichts gefunden ...

Liebe Grüße von
Y@nnosch!

[UPDATE]: Ich habe doch herrausgefunden, dass die MsgBox auf 1200 Zeichen begrenzt ist ... jetzt schreibe ich es einfach in eine .txt Datei mit Document.writeline ... ABER wie bekomme ich das hin, das das Editorfenster geöffnet wird UND in den Vordergrund gestellt wird ? ... Sodass derjenige der das Script ausführt den EditorPad auch sieht ...


Liebe Grüße von
Y@nnosch!
Bitte warten ..
Mitglied: colinardo
08.10.2013, aktualisiert um 09:15 Uhr
01.
Set objShell = CreateObject("WScript.Shell")
02.
objShell.Run "notepad " & "c:\textdatei.txt", 1, true
Wenn du willst das das Script wartet bis das Notepad geschlossen wird, setzt du den letzten Parameter auf True , wenn es nicht warten soll auf False.

Grüße Uwe
Bitte warten ..
Mitglied: Yannosch
08.10.2013 um 08:50 Uhr
Set meineDatei = fso.CreateTextFile("c:\textdatei.txt")
meineDatei.writeline (allServices)
Set objShell = CreateObject("WScript.Shell")
objShell.Run("notepad " & "c:\textdatei.txt", 1, true)

Fehlermeldung [Letzte Zeile] : Unterroutinen (Sub) dürfen keine Klammern enthalten.
Datei soll auch nach dem anschauen, sobald sie wegge "X" t wird gelöscht werden ... aber einfach datei.delet , das bekomm ich ja noch hin....
Bitte warten ..
Mitglied: colinardo
08.10.2013 um 09:16 Uhr
waren die Klammern zu viel,ist oben korrigiert
Bitte warten ..
Mitglied: Yannosch
08.10.2013 um 09:30 Uhr
Perfekt, vielen Dank... Und wie bekomme ich die MsgBox die nach dem Notepad folgt wieder in den Vordergrund ?
Bitte warten ..
Ähnliche Inhalte
Linux Netzwerk
FreeRadius Lokal
Frage von D1-aB-loLinux Netzwerk7 Kommentare

Ich habe hier schon ein Thema erstellt das sich mit dem FreeRadius beschäftigt in Verbindung mit LDAP. Nun erstelle ...

Netzwerke
Serverumzug lokal (physisch)
Frage von freakalabenniNetzwerke10 Kommentare

Hallo Allerseits, ich hätte da eine Frage bzgl. eines Projektes das wir uns für eine unserer Niederlassungen vorstellen. Derzeit ...

VB for Applications
VBS Schleife
gelöst Frage von IleiesVB for Applications6 Kommentare

Hallo zusammen, Wie kann ich mit vbs machen, dass eine Musikdatei in einer Schleife ohne Ende immer wieder abgespielt ...

Windows Server

Verwendung lokal angeschlossener Geräte

Frage von raba34Windows Server17 Kommentare

Liebe Gemeinde, ich möchte in einer RDP-Sitzung (PC mit Windows 10 Pro -> Windows Server 2012 R2) die Verwendung ...

Neue Wissensbeiträge
Linux Desktop

Warum Linux in einer vernetzten Welt einfach keinen Komfort bietet!

Tipp von Snowbird vor 1 StundeLinux Desktop1 Kommentar

Ein interessanter Einblick warum Linux nichts für Geräteübergreifende Arbeit ist :)

Humor (lol)
Zuviel Speicher ist ungesund. :-)
Tipp von Lochkartenstanzer vor 13 StundenHumor (lol)11 Kommentare

Moin Kollegen, Heute hatte ich ein ungewöhnliches Aha-Erlebnis: Über das Wochenende habe ich einen einen 6 Jahre alten Bare-Metal ...

Windows Update

KB4517297 verfügbar, behebt Fehler in VB6 VBA VBScript

Information von sabines vor 16 StundenWindows Update

Das Update behebt mögliche Fehler in VB6, VBA und VBScript, die durch das Update KB4512486 vom August entstanden sind. ...

Viren und Trojaner

Staatstrojaner soll auch per Einbruch installiert werden können

Information von transocean vor 2 TagenViren und Trojaner4 Kommentare

Moin, Bundesinnenminister Horst Seehofer will dem Verfassungsschutz Wohnungseinbrüche erlauben, um den geplanten Staatstrojaner zu installieren. Gruß Uwe

Heiß diskutierte Inhalte
Hyper-V
Bei Neuaufbau auf Core-Server setzen?
gelöst Frage von dertowaHyper-V32 Kommentare

Hallo zusammen, ich habe vor einigen Monaten die Verantwortung für eine EDV-Landschaft übernommen die seit Jahren von einem Dienstleister ...

Router & Routing
VPN Verbindung zur Fritzbox über Speedport
gelöst Frage von SchwabenlandRouter & Routing13 Kommentare

Hallo! Ich bin gerade im Urlaub an der Nordsee :-) In unserem Ferienhaus haben wir WLAN, das durch einen ...

Netzwerkmanagement
Zentrales Switch-Management
Frage von joergNetzwerkmanagement11 Kommentare

Hallo zusammen, ich bin auf der Suche nach einem Management für Switche. Wir haben eine heterogene Struktur und jede ...

Humor (lol)
Zuviel Speicher ist ungesund. :-)
Tipp von LochkartenstanzerHumor (lol)11 Kommentare

Moin Kollegen, Heute hatte ich ein ungewöhnliches Aha-Erlebnis: Über das Wochenende habe ich einen einen 6 Jahre alten Bare-Metal ...