Czym jest VBScript i dlaczego warto go poznac
VBScript (Visual Basic Scripting Edition) to lekki język skryptowy od Microsoftu, oparty na Visual Basic, który przez dekady był domyślnym narzędziem do automatyzacji w systemie Windows. Jeśli kiedykolwiek musieliście zalogować skrypt startowy w Active Directory, zautomatyzować instalację oprogramowania na setkach komputerów albo napisać makro w HTA (HTML Application) — VBScript był narzędziem, po które sięgaliście.
VBScript jest głęboko zintegrowany z ekosystemem Windows przez Windows Script Host (WSH), Active Directory, IIS (Internet Information Services) i COM (Component Object Model). Przez COM, VBScript ma dostęp do praktycznie każdego komponentu systemu Windows — od systemu plików, przez rejestr, po aplikacje Office. To daje mu poziom integracji, który PowerShell osiągnął dopiero po latach.
Warto go poznać, bo VBScript — mimo że Microsoft oficjalnie go deprecjonuje — nadal jest obecny w milionach systemów enterprise. Administratorzy Windows, którzy utrzymują starsze środowiska, muszą znać VBScript. A zrozumienie VBScript pomaga w migracji do PowerShell, bo wiele konceptów — COM objects, WMI, Active Directory scripting — przenosi się bezpośrednio.
Krótka historia i ewolucja
VBScript zadebiutował w 1996 roku jako część Internet Explorer 3.0 i Windows Script Host. Microsoft potrzebował lekkiego języka skryptowego, który mógłby konkurować z JavaScript w przeglądarce i jednocześnie służyć do automatyzacji systemu. VBScript był odpowiedzią — uproszczoną wersją Visual Basic, którą można było uruchamiać bez kompilacji.
W latach 1996-2006 VBScript był królem automatyzacji Windows. Skrypty logowania w domenach Active Directory, automatyzacja IIS, administracja Exchange Server, zarządzanie systemem przez WMI — wszystko to było pisane w VBScript. ASP (Active Server Pages) używał VBScript jako domyślnego języka serwerowego, zanim ASP.NET go zastąpił.
Od 2006 roku PowerShell zaczął stopniowo przejmować rolę VBScript jako narzędzia administracyjnego. W 2023 roku Microsoft oficjalnie ogłosił deprecjację VBScript — w przyszłych wersjach Windows będzie dostępny jako “Feature on Demand” i ostatecznie zostanie usunięty. Ale “ostatecznie” w świecie enterprise oznacza dekady — VBScript będzie obecny w systemach produkcyjnych jeszcze bardzo długo.
Kluczowe cechy i filozofia
VBScript jest językiem proceduralnym z elementami obiektowymi. Składnia jest verbose i czytelna — Dim, Set, If...Then...End If, For Each...Next. Nie ma nawiasów klamrowych — bloki kodu są zamykane słowami kluczowymi (End If, End Sub, End Function). To sprawia, że kod jest długi, ale łatwy do odczytania nawet dla osób nieprogramujących.
Typowanie jest dynamiczne z jednym typem — Variant. Każda zmienna jest Variant, który może przechowywać liczbę, string, datę, obiekt, tablicę lub Nothing. To upraszcza model, ale prowadzi do subtelnych bugów — porównanie "" = 0 zwraca True w VBScript, co może być zaskakujące.
Model obiektowy VBScript opiera się na COM. Tworzycie obiekty COM przez CreateObject("Scripting.FileSystemObject") i wywołujecie ich metody. To daje dostęp do systemu plików, rejestru, Active Directory, WMI, aplikacji Office i tysięcy innych komponentów. COM jest skomplikowany, ale VBScript ukrywa tę złożoność za prostą składnią.
Filozofia VBScript to “automatyzacja dla administratorów, nie programistów”. Język celowo unika zaawansowanych konceptów — nie ma dziedziczenia, nie ma lambda expressions, nie ma try/catch (jest On Error Resume Next, który jest… specyficzny). To narzędzie do getting things done, nie do eleganckiego kodu.
Gdzie VBScript sprawdza się najlepiej
Administracja Windows w środowiskach legacy to główny use case. Skrypty logowania (logon scripts) w Active Directory, automatyzacja GPO (Group Policy Objects), deployment oprogramowania przez SCCM — wiele z tych skryptów jest napisanych w VBScript i nadal działa w firmach na całym świecie.
VBScript sprawdza się też w automatyzacji aplikacji Office. Przez COM, VBScript może sterować Excelem, Wordem, Outlookiem — tworzyć raporty, wysyłać maile, przetwarzać dokumenty. Wiele firm ma biblioteki skryptów VBScript, które automatyzują codzienne operacje biurowe.
Testowanie i monitoring: VBScript z WMI (Windows Management Instrumentation) pozwala zbierać metryki systemowe, sprawdzać stan usług, monitorować event logi. Skrypty VBScript mogą być uruchamiane przez Task Scheduler jako cykliczne zadania monitorujące.
Jak wygląda kod w VBScript
Skrypt do czyszczenia starych plików tymczasowych:
Option Explicit
Dim fso, folder, file, cutoffDate, deletedCount
Set fso = CreateObject("Scripting.FileSystemObject")
Set folder = fso.GetFolder("C:Temp")
cutoffDate = DateAdd("d", -30, Now)
deletedCount = 0
For Each file In folder.Files
If file.DateLastModified < cutoffDate Then
On Error Resume Next
file.Delete True
If Err.Number = 0 Then
deletedCount = deletedCount + 1
Else
WScript.Echo "Nie można usunąć: " & file.Name & " - " & Err.Description
Err.Clear
End If
On Error GoTo 0
End If
Next
WScript.Echo "Usunięto " & deletedCount & " plików starszych niż 30 dni."
Option Explicit wymusza deklarację zmiennych — dobra praktyka w VBScript. CreateObject tworzy instancję COM. On Error Resume Next to jedyny mechanizm obsługi błędów — wyłącza zatrzymywanie na błędach, a wy sprawdzaacie Err.Number ręcznie.
Skrypt wysyłający maila przez Outlook:
Dim olApp, olMail
Set olApp = CreateObject("Outlook.Application")
Set olMail = olApp.CreateItem(0)
With olMail
.To = "zespol@firma.pl"
.Subject = "Raport dzienny - " & Date
.Body = "W załączniku dzisiejszy raport." & vbCrLf & "Pozdrawiam, Skrypt"
.Attachments.Add "C:Raportyraport_" & Year(Now) & Month(Now) & Day(Now) & ".xlsx"
.Send
End With
WScript.Echo "Mail wysłany!"
Set olMail = Nothing
Set olApp = Nothing
With...End With to wygodna konstrukcja VBScript do unikania powtarzania nazwy obiektu.
Ekosystem i narzędzia
VBScript nie ma package managera ani frameworków — jego ekosystemem jest Windows. Notepad to domyślne “IDE”, ale do poważniejszej pracy używano Visual Studio (starsze wersje), PrimalScript od SAPIEN Technologies lub VS Code z rozszerzeniami. Windows Script Host (cscript.exe dla konsoli, wscript.exe dla GUI) to runtime.
Dokumentacja Microsoftu (docs.microsoft.com) zawiera pełną referencję VBScript, WMI i COM. Scripting Guy Blog — legendarny blog zespołu Microsoft Scripting — to kopalnia wiedzy i przykładów. Archiwalne posty Ed Wilsona i zespołu są nadal najlepszym źródłem praktycznej wiedzy o VBScript.
Społeczność VBScript jest duża, ale pasywna — miliony administratorów Windows znają VBScript, ale niewielu aktywnie uczestniczy w forach. Stack Overflow ma tysiące pytań o VBScript, ale nowe pytania pojawiają się coraz rzadziej, zastępowane przez PowerShell.
Mocne i słabe strony
Mocne strony: głęboka integracja z Windows, prostota dla podstawowych zadań, wszechobecność (jest na każdym Windows od Windows 98). VBScript nie wymaga instalacji — po prostu działa. COM daje dostęp do praktycznie wszystkiego w ekosystemie Windows. Dla administratorów, którzy muszą szybko zautomatyzować zadanie, VBScript jest często najszybszą drogą.
Słabe strony: brak nowoczesnych konceptów programistycznych. Brak try/catch, brak tablic dynamicznych (redim preserve jest toporny), brak string interpolation, brak pipeline’ów. On Error Resume Next to antipattern w każdym innym języku — ukrywa błędy zamiast je obsługiwać. Debugging jest bolesny — brak prawdziwego debuggera, WScript.Echo to wasz jedyny przyjaciel.
VBScript jest też jednowymiarowy — nie nadaje się do niczego poza ekosystemem Windows. Nie jest cross-platform, nie ma zastosowań webowych (poza legacy ASP), nie ma bibliotek do data science, ML czy czegokolwiek nowoczesnego. I jest oficjalnie deprecjonowany — inwestowanie w naukę VBScript w 2024 roku to wybór ryzykowny.
Podsumowanie
VBScript to narzędzie, które każdy administrator Windows powinien znać — choćby po to, żeby czytać i utrzymywać istniejące skrypty. Jeśli pracujecie w środowisku enterprise z Active Directory, Exchange, SCCM i starszymi systemami Microsoft, VBScript będziecie spotykać regularnie. Umiejętność czytania i modyfikowania skryptów VBScript to praktyczna umiejętność, nie hobby.
Przyszłość VBScript jest przesądzona — Microsoft go deprecjonuje i PowerShell jest oficjalnym następcą. Ale migracja z VBScript na PowerShell w dużych organizacjach to proces na lata, jeśli nie dekady. VBScript nie zniknie z dnia na dzień, ale nowe projekty powinny powstawać w PowerShell. Uczcie się VBScript, żeby rozumieć przeszłość, ale inwestujcie w PowerShell, żeby budować przyszłość.

