VBScript (ang. Microsoft’s Visual Basic Scripting Edition) jest językiem skryptowym stworzony przez firmę Microsoft. W codziennej pracy, jako administrator sieci możemy wykorzystać go do pisania skryptów logowania, za pomocą których automatycznie podmapujemy dysk sieciowy, drukarkę, skopiujemy pliki, uruchomimy program itp. W tym artykule zamieszczał będę najczęściej wykorzystywane skrypty. Zachęcam do pisania oraz nadsyłania własnych skryptów (polecam Notepad++) jak i eksperymentowania z tym językiem.
Ps. Tekst kopiujemy i wklejamy np do notatnika, następnie zapisujemy z rozszerzeniem .vbs
Mapowanie udziału do komputera nie będącego w domenie.
Option Explicit
Dim objNetwork
Dim objShell
Dim desktopLink
Dim objSpace
Dim userDesktop
Dim strLocalDrive
Dim strRemoteShare
Dim strUsr
Dim strPas
Dim strPer
Dim strPath
Set objNetwork = WScript.CreateObject("WScript.Network")
Set objSpace = CreateObject("Shell.Application")
Set objShell = CreateObject("Wscript.Shell")
userDesktop = objShell.SpecialFolders("Desktop")
'MAPOWANIE DYSKU H
strLocalDrive = "h:"
strRemoteShare = "\\nazwa_serwera\nazwa_udziału"
strUsr = "login"
strPas = "hasło"
objNetwork.MapNetworkDrive strLocalDrive, strRemoteShare, strPer, strUsr, strPas
objSpace.NameSpace(strLocalDrive).Self.Name = "Podmapowany"
' TWORZENIE SKRÓTU NA PULPICIE DO PODMAPOWANEGO DYSKU
set desktopLink = objShell.CreateShortcut(userDesktop & "\Pliki na serwer.lnk")
desktopLink.TargetPath = strLocalDrive
desktopLink.Save
Tworzenie folderu z datą wraz z kopiowaniem do niego plików
StrMonth = Month(Date)
If Len(strMonth) = 1 Then
strMonth = "0" & strMonth
End If
StrDay = Day(Date)
If Len(strDay) = 1 Then
strDay = "0" & strDay
End If
StrYear = Year(Date)
' NAZWA TWORZONEGO FOLDERU + DATA SYSTEMOWA
strFolderName = "X:\ścieżka\nazwa folderu" & strDay & "." & strMonth & "." & StrYear
Set objFSO = CreateObject("Scripting.FileSystemObject")
' SPRAWDŹ CZY FOLDER ISTNIEJE, JEŚLI TAK-KOPIUJ PLIKI
if objFSO.FolderExists(strFolderName) then
objFSO.CopyFile "X:\ścieżka\nazwa folderu\xxx.txt", strFolderName & "\"
objFSO.CopyFile "X:\ścieżka\nazwa folderu\x.txt", strFolderName & "\"
' SPRAWDŹ CZY FOLDER ISTNIEJE, JEŚLI NIE-UTWÓRZ FOLDER I KOPIUJ PLIKI
else
Set objFolder = objFSO.CreateFolder(strFolderName)
objFSO.CopyFile "X:\ścieżka\nazwa folderu\xxx.txt", strFolderName & "\"
objFSO.CopyFile "X:\ścieżka\nazwa folderu\x.txt", strFolderName & "\"
end if
Mapowanie drukarki do komputera w domenie
Option Explicit
On error resume next
Dim printerNetwork
Dim printer
printer = "\\nazwa_serwera\nazwa_drukarki"
Set printerNetwork = CreateObject("Wscript.Network")
printerNetwork.AddWindowsPrinterConnection printer
printerNetwork.SetDefaultPrinter printer
Mapowanie udziału do komputera w domenie
Option Explicit
On error resume next
Dim objNetwork
Dim objShell
Dim appShell
Dim userLink
Set objNetwork = CreateObject("Wscript.Network")
Set objShell = CreateObject("Wscript.Shell")
Set appShell = CreateObject("Shell.Application")
userDesktop = objShell.SpecialFolders("Desktop")
'MAPOWANIE DYSKU
objNetwork.MapNetworkDrive "h:","\\nazwa_servera\nazwa_udziału", true
appShell.NameSpace("h:").Self.Name = "Podmapowany"
'TWORZENIE SKRóTU NA PULPICIE DO PODMAPOWANEGO DYSKU
set userLink = objShell.CreateShortcut(userDesktop & "\Podmapowany.lnk")
userLink.TargetPath = "h:"
userLink.Save
Tworzenie jednostki organizacyjnej i w niej kilku kont.
Dim objDomain, objOU, ouName, userName
'NAZWA TWORZONEJ JEDNOSTKI ORGANIZACYJNEJ
ouName = "Studenci"
'NAZWA TWORZONEGO KONTA
userName = "Student"
Set objRootDSE = GetObject("LDAP://rootDSE")
Set objDomain = GetObject("LDAP://" & objRootDSE.Get("defaultNamingContext"))
'TWORZENIE JEDNOSTKI ORGANIZACYJNEJ O NAZWIE STUDENCI
Set objOU=objDomain.Create("organizationalUnit", "ou=" & ouName)
objOU.SetInfo
Set objContainer = GetObject("LDAP://OU=Studenci," & _
objRootDSE.Get("defaultNamingContext"))
'TWORZENIE 10 UŻYTKOWNIKÓW O NAZWIE STUDENT
For i = 1 To 10
Set objLeaf = objContainer.Create("User", "cn=" & userName & i)
objLeaf.Put "sAMAccountName", userName & i
Next
'INFORMACJA O UTWORZONYCH KONTACH
WScript.Echo "Konta zostały utworzone."
Dodanie komputera do domeny
Const JOIN_DOMAIN = 1
Const ACCT_CREATE = 2
Const ACCT_DELETE = 4
Const WIN9X_UPGRADE = 16
Const DOMAIN_JOIN_IF_JOINED = 32
Const JOIN_UNSECURE = 64
Const MACHINE_PASSWORD_PASSED = 128
Const DEFERRED_SPN_SET = 256
Const INSTALL_INVOCATION = 262144
strDomain = "nazwa domeny np soisk.local"
strUser = "nazwa użytkownika np administrator"
strPassword = "hasło użytkownika np zaq1@WSX"
Set objNetwork = CreateObject("WScript.Network")
strComputer = objNetwork.ComputerName
Set objComputer = GetObject("winmgmts:{impersonationLevel=Impersonate}!\\" & _
strComputer & "\root\cimv2:Win32_ComputerSystem.Name='" & _
strComputer & "'")
ReturnValue = objComputer.JoinDomainOrWorkGroup(strDomain, _
strPassword, strDomain & "\" & strUser, NULL, _
JOIN_DOMAIN + ACCT_CREATE)
Tworzenie lokalnego konta w systemie Windows XP
' Nazwa użytkownika
strUserName = "SOiSK"
' Hasło użytkownika
strPassword = "zaq1@WSX"
' Nazwa komptera
strComputer = "komp1"
set objSystem = GetObject("WinNT://" & strComputer)
'Tworzenie konta
set objUser = objSystem.Create("user", strUserName)
'Ustawianie hasła
objUser.SetPassword strPassword
objUser.SetInfo
Dodanie lokalnego konta do grupy Administratorów
'Nazwa użytkownika
strUserName = "SOiSK"
'Nazwa grupy
strGroup = "Administratorzy"
'Nazwa komputera
strComputer = "komp1"
Set objGroup = GetObject("WinNT://" & strComputer & "/" & strGroup & ",group")
Set objUser = GetObject("WinNT://" & strComputer & "/" & strUserName & ",user")
' Dodanie użytkownika do grupy
objGroup.Add(objUser.ADsPath)
objUser.SetInfo
Uruchamianie plików exe z program files
Sub Run(ByVal sFile)
Dim shell
Set shell = CreateObject("WScript.Shell")
shell.Run Chr(34) & sFile & Chr(34), 1, false
Set shell = Nothing
End Sub
Run "C:\Program Files\Internet Explorer\iexplore.exe"
Pobieranie pliku z internetu
ImageFile = "nazwa_pliku.exe"
DestFolder = "D:\"
URL = "http://nazwa_strony"
Set xml = CreateObject("Microsoft.XMLHTTP")
xml.Open "GET", URL, False
xml.Send
set oStream = createobject("Adodb.Stream")
Const adTypeBinary = 1
Const adSaveCreateOverWrite = 2
Const adSaveCreateNotExist = 1
oStream.type = adTypeBinary
oStream.open
oStream.write xml.responseBody
' Nie nadpisuj pliku
oStream.savetofile DestFolder & ImageFile, adSaveCreateNotExist
' Jeśli plik istnieje nadpisz
' oStream.savetofile DestFolder & ImageFile, adSaveCreateOverWrite
oStream.close
set oStream = nothing
Set xml = Nothing
Rozpakowywanie pliku zip
Set args = WScript.Arguments
'Lokalizacja pliku zip
ZipFile= "C:\file.zip"
'Miejsce wypakowania pliku
ExtractTo= "C:\"
'If the extraction location does not exist create it.
Set fso = CreateObject("Scripting.FileSystemObject")
If NOT fso.FolderExists(ExtractTo) Then
fso.CreateFolder(ExtractTo)
End If
'Extract the contants of the zip file.
set objShell = CreateObject("Shell.Application")
set FilesInZip=objShell.NameSpace(ZipFile).items
objShell.NameSpace(ExtractTo).CopyHere(FilesInZip)
Set fso = Nothing
Set objShell = Nothing
Od roku 2005 zawodowo związany z branżą informatyczną. Wieloletnie doświadczenie zaowocowało uzyskaniem prestiżowego, międzynarodowego tytułu MVP (Most Valuable Professional) nadanego przez firmę Microsoft. W wolnych chwilach prowadzi blog oraz nagrywa, montuje i publikuje kursy instruktażowe na kanale YouTube.