Script Console

Script Beispiele

Version 1.3 (Build 20)

Zurück

Script-Beispiele für den Windows Script Host und Script Console

eMail senden mit VBScript

VBScript:  sendmail
Dim iMsg
Set iMsg
= CreateObject("CDO.Message")

With iMsg
     .To 
= "name@domain.de"
     .From
= "myname@mydomain.de"
     .Subject
= "A short message"
     .TextBody
= "Text of this short message."
     .Send
End With
  1. Kopieren Sie den Code in den Scriptbereich von Script Console
  2. Es sollte VBScript als Script-Sprache eingestellt sein (standard)
  3. Geben Sie für .From und .To gültige eMail-Adressen an
  4. Drücken Sie [F5], um die Mail abzusenden

Regulare Expressions

VBScript:  RegExp
dim test,pattern,regexp,matches

test = "http://msdn.microsoft.com:80/scripting/default.htm"
pattern = "(\w+):\/\/([^/:]+)(:\d*)?([^# ]*)"

Set regexp = New RegExp

regexp.pattern = pattern
set matches = regexp.execute(test)

dim m,s
For Each m in matches      ' Iterate Matches collection.
  
for each s in m.submatches
    
echo s
  
next
Next
Ausgabe:
http
msdn.microsoft.com
:80
/scripting/default.htm

VBScript: Introduction to Regular Expressions, Regular Expression (RegExp) Object

 

JScript:  RegExp
var test = "http://msdn.microsoft.com:80/scripting/default.htm";
var regexp = /(\w+):\/\/([^/:]+)(:\d*)?([^# ]*)/;

regexp.exec(test);

WScript.Echo("Sheme:  " + RegExp.$1);
WScript.Echo("Domain: " + RegExp.$2);
WScript.Echo("Port:   " + RegExp.$3);
WScript.Echo("Path:   " + RegExp.$4);
Ausgabe:
Sheme:  http
Domain: msdn.microsoft.com
Port:   :80
Path:   /scripting/default.htm

JScript: Introduction to Regular Expressions, RegExp Object, Regular Expression Object

Taschenrechner starten mit WScript.Shell

VBScript:  exec calc
Dim WshShell, oExec
Set WshShell = CreateObject("WScript.Shell")

Set oExec = WshShell.Exec("calc")

Do While oExec.Status = 0
    
WScript.Sleep 100
Loop

WScript.Echo oExec.Status
JScript: exec calc
var WshShell = new ActiveXObject("WScript.Shell");
var oExec = WshShell.Exec("calc");

while (oExec.Status == 0)
{
    
WScript.Sleep(100);
}

WScript.Echo(oExec.Status);

Sendkeys mit WScript.Shell

VBScript:  sendkeys
Dim WshSHell
set WshShell = CreateObject("WScript.Shell")
WshShell.Run("calc")
WScript.Sleep(100)
WshShell.AppActivate("Calculator")
WScript.Sleep(100)
WshShell.SendKeys("1{+}")
WScript.Sleep(500)
WshShell.SendKeys("2")
WScript.Sleep(500)
WshShell.SendKeys("~")
WScript.Sleep(500)
WshShell.SendKeys("*3")
WScript.Sleep(500)
WshShell.SendKeys("~")
WScript.Sleep(2500)

SpecialFolders ermitteln mit WScript.Shell

VBScript:  special folders
set WshShell = WScript.CreateObject("WScript.Shell")
dim f
for each f in WshShell.SpecialFolders
  
WScript.Echo f
next
JScript: exec calc
var WshShell = new ActiveXObject("WScript.Shell");
var oExec = WshShell.Exec("calc");

while (oExec.Status == 0)
{
     WScript.Sleep(
100);
}

WScript.Echo(oExec.Status);

Folgende Ordner sind verfügbar:

AllUsersDesktop, AllUsersStartMenu, AllUsersPrograms, AllUsersStartup, Desktop, Favorites, Fonts, MyDocuments, NetHood, PrintHood, Programs, Recent, SendTo, StartMenu, Startup, Templates

Übergeben Sie den Namen z.B. wie folgt:

WshShell.GetSpecialFolder("Desktop")

Netzwerkinformationen ermitteln mit WScript.Network

VBScript: netinfo
Set WshNetwork = WScript.CreateObject("WScript.Network")
Set oDrives = WshNetwork.EnumNetworkDrives
Set oPrinters = WshNetwork.EnumPrinterConnections
WScript.Echo "Domain = " & WshNetwork.UserDomain
WScript.Echo "Computer Name = " & WshNetwork.ComputerName
WScript.Echo "User Name = " & WshNetwork.UserName
WScript.Echo
WScript.Echo "Network drive mappings:"
For i = 0 to oDrives.Count - 1 Step 2
  
WScript.Echo "Drive " & oDrives.Item(i) & " = " & oDrives.Item(i+1)
Next
WScript.Echo
WScript.Echo "Network printer mappings:"
For i = 0 to oPrinters.Count - 1 Step 2
  
WScript.Echo "Port " & oPrinters.Item(i) & " = " & oPrinters.Item(i+1)
Next
JScript:  netinfo
var WshNetwork = new ActiveXObject("WScript.Network");
var oDrives = WshNetwork.EnumNetworkDrives();
var oPrinters = WshNetwork.EnumPrinterConnections();
WScript.Echo("Domain = " + WshNetwork.UserDomain);
WScript.Echo("Computer Name = " + WshNetwork.ComputerName);
WScript.Echo("User Name = " + WshNetwork.UserName);
WScript.Echo();
WScript.Echo("Network drive mappings:");
for(i=0; i<oDrives.Count(); i+=2)
{
  
WScript.Echo("Drive " + oDrives.Item(i) + " = " + oDrives.Item(i+1));
}
WScript.Echo();
WScript.Echo("Network printer mappings:");
for(i=0; i<oPrinters.Count(); i+=2)
{
  
WScript.Echo("Port " + oPrinters.Item(i) + " = " + oPrinters.Item(i+1));
}

Shortcut erzeugen mit WScript.Shell

Achtung: Dieses Script erzeugt eine Dateiverknüpfung auf dem Desktop, welches sich selbst mit Notepad öffnet. Speichern Sie daher das Script unter einem beliebigen Dateinamen, bevor Sie es ausführen.

VBScript: Shortcut
set WshShell = WScript.CreateObject("WScript.Shell")
strDesktop = WshShell.SpecialFolders("Desktop")
set oShellLink = WshShell.CreateShortcut(strDesktop & "\Shortcut Script.lnk")
oShellLink.TargetPath = WScript.ScriptFullName
oShellLink.WindowStyle = 1
oShellLink.Hotkey = "CTRL+SHIFT+F"
oShellLink.IconLocation = "notepad.exe, 0"
oShellLink.Description = "Shortcut Script"
oShellLink.WorkingDirectory = strDesktop
oShellLink.Save
JScript:  Shortcut
var WshShell = WScript.CreateObject("WScript.Shell");
strDesktop = WshShell.SpecialFolders("Desktop");
var oShellLink = WshShell.CreateShortcut(strDesktop + "\\Shortcut Script.lnk");
oShellLink.TargetPath = WScript.ScriptFullName;
oShellLink.WindowStyle = 1;
oShellLink.Hotkey = "CTRL+SHIFT+F";
oShellLink.IconLocation = "notepad.exe, 0";
oShellLink.Description = "Shortcut Script";
oShellLink.WorkingDirectory = strDesktop;
oShellLink.Save();

Active Directory Namespaces und Domains ermitteln mit ADSI

VBScript:
Dim myADS
Dim namespace
Dim domain

Set myADS = GetObject("ADs:")

On Error Resume Next
For Each namespace In myADS
    
WScript.Echo "Domains in " & namespace.Name
    
For Each domain In namespace
        
If Err.Number = &H800704B8 Then
            
WScript.Echo "    This namespace contains no domains"
        
Elseif Err.Number <> 0 Then
            
WScript.Echo "Unexpected error: " & Err.Number
            
WScript.Echo Err.Description
            
WScript.Quit(1)
        
Else
            
WScript.Echo "    " & domain.Name
        
End If
    
Next
Next

Properties von AD-Objekten ermitteln (ADSI)

VBScript:
Dim myDomain
Dim mySchemaClass
Dim member

strDomain = "." 'Die eigene Domain, sonst Domain-Namen angeben

Set myDomain = GetObject("WinNT://" & strDomain)
Set mySchemaClass = GetObject(myDomain.Schema)

WScript.Echo "Properties for the " & myDomain.Name & " object"
WScript.Echo

If mySchemaClass.Container Then
    
WScript.Echo myDomain.Name & " may contain the following objects:"
    
For Each member In mySchemaClass.Containment
        
WScript.Echo "    " & member
    
Next
Else
    
WScript.Echo myDomain.Name & " is not a container."
End If
WScript.Echo

WScript.Echo "Mandatory properties:"
For Each member In mySchemaClass.MandatoryProperties
    
WScript.Echo "    " & member
Next
WScript.Echo

WScript.Echo "Optional properties:"
For Each member In mySchemaClass.OptionalProperties
    
WScript.Echo "    " & member
Next

Members von AD-Objekten ermitteln (ADSI)

VBScript: Alle Mitglieder
Dim myDomain
Dim member

strDomain = "." 'die eigene Domain

Set myDomain = GetObject("WinNT://" & strDomain)

myDomain.Filter = Array()
For Each member In myDomain
    
WScript.Echo member.class & ": " & member.Name
Next
VBScript: Mit Filter
Dim myDomain
Dim member

strDomain = "." 'die eigene Domain, bzw.der eigene Computer

Set myDomain = GetObject("WinNT://" & strDomain)

WScript.Echo "Groups:" & vbNewLine
myDomain.Filter = Array("group")
For Each member In myDomain
    
WScript.Echo member.Name
Next

WScript.Echo vbNewline & "Users:" & vbNewLine
myDomain.Filter = Array("user")
For Each member In myDomain
    
WScript.Echo member.Name
Next

WScript.Echo vbNewline & "Services:" & vbNewLine
myDomain.Filter = Array("service")
For Each member In myDomain
    
WScript.Echo member.Name
Next

Systeminformationen ermitteln mit WMI

VBScript: Speicher ermitteln
strComputer = "."

Set wbemServices
= GetObject("winmgmts:\\" & strComputer)
Set wbemObjectSet
= wbemServices.InstancesOf("Win32_LogicalMemoryConfiguration")

For Each wbemObject In wbemObjectSet
    WScript.Echo
"Total Physical Memory (kb): " & wbemObject.TotalPhysicalMemory
Next

Informationen zum Betriebssystem mit WMI ermitteln

VBScript:  osinfo
strComputer = "."

Set objWMIService = GetObject("winmgmts:\\" & strComputer)
Set colOperatingSystems = objWMIService.InstancesOf("Win32_OperatingSystem")

For Each objOperatingSystem In colOperatingSystems
    
Wscript.Echo "Name:            " & objOperatingSystem.Name   & vbCrLf & _
        
"Caption:         " & objOperatingSystem.Caption         & vbCrLf & _
        
"CurrentTimeZone: " & objOperatingSystem.CurrentTimeZone & vbCrLf & _
        
"LastBootUpTime:  " & objOperatingSystem.LastBootUpTime  & vbCrLf & _
        
"LocalDateTime:   " & objOperatingSystem.LocalDateTime   & vbCrLf & _
        
"Locale:          " & objOperatingSystem.Locale          & vbCrLf & _
        
"Manufacturer:    " & objOperatingSystem.Manufacturer    & vbCrLf & _
        
"OSType:          " & objOperatingSystem. OSType         & vbCrLf & _
        
"Version:         " & objOperatingSystem.Version         & vbCrLf & _
        
"Service Pack:    " & objOperatingSystem.ServicePackMajorVersion  & _
                
"." & objOperatingSystem.ServicePackMinorVersion & vbCrLf & _
        
"Windows Directory: " & objOperatingSystem.WindowsDirectory
Next

Windows-NT - Services ermitteln mit WMI

VBScript: services
strComputer = "."   ' Dot (.) equals local computer in WMI

Set objWMIService
= GetObject("winmgmts:\\" & strComputer)
Set colServices
= objWMIService.InstancesOf("Win32_Service")

For Each objService In colServices
    WScript.Echo
"Name:           " & objService.Name        & vbCrLf & _
                
"Display Name:   " & objService.DisplayName & vbCrLf & _
                
"   Description: " & objService.Description & vbCrLf & _
                
"   Path Name:   " & objService.PathName    & vbCrLf & _
                
"   Start Mode:  " & objService.StartMode   & vbCrLf & _
                
"   State:       " & objService.State       & vbCrLf
Next

Windows-NT - EventLog ausgeben mit WMI

Achtung: Das kann eine sehr umfangreiche Liste ergeben!

VBScript: EventLog
strComputer = "."   ' Dot (.) equals local computer in WMI

Set objWMIService
= GetObject("winmgmts:\\" & strComputer)
Set colServices
= objWMIService.InstancesOf("Win32_Service")

For Each objService In colServices
    WScript.Echo
"Name:           " & objService.Name        & vbCrLf & _
                
"Display Name:   " & objService.DisplayName & vbCrLf & _
                
"   Description: " & objService.Description & vbCrLf & _
                
"   Path Name:   " & objService.PathName    & vbCrLf & _
                
"   Start Mode:  " & objService.StartMode   & vbCrLf & _
                
"   State:       " & objService.State       & vbCrLf
Next

Aktuelle Prozesse ausgeben mit WMI

VBScript: Taskliste
strComputer = "."   ' Dot (.) equals local computer in WMI

Set wbemServices = GetObject("winmgmts:\\" & strComputer)
Set wbemObjectSet = wbemServices.InstancesOf("Win32_Process")

For Each wbemObject In wbemObjectSet
    
WScript.Echo "Name:          " & wbemObject.Name      & vbCrLf & _
                
"   Handle:     " & wbemObject.Handle    & vbCrLf & _
                
"   Process ID: " & wbemObject.ProcessID
Next