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

Rysunek 1. Zapisywanie gotowego skryptu.

Rysunek 1. Zapisywanie gotowego skryptu.

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."

Rysunek 6. Automatyczne tworzenie jednostki organizacyjnej oraz kliku kont.

Rysunek 6. Automatyczne tworzenie jednostki organizacyjnej oraz kliku kont.

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)

Rysunek 7. Dodanie komputera do domeny.

Rysunek 7. Dodanie komputera do domeny.

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

Rysunek 8. Tworzenie lokalnego konta w systemie Windows XP

Rysunek 8. Tworzenie lokalnego konta w systemie Windows XP

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

Rysunek 9. Dodanie lokalnego użytkownika do grupy Administratorów

Rysunek 9. Dodanie lokalnego użytkownika do grupy Administratorów

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

Rysunek 12. Rozpakowywanie pliku zip.

Rysunek 12. Rozpakowywanie pliku zip.

Tematy pokrewne: