Script
I suggerimenti sono stati presi da riviste di informatica, da newsletters o da siti web
perciò ogni diritto rimane al legittimo proprietario.

 

Rilevazione software installato su PC
Utilizzando questo script come script di logon, verrrà creato un file xls NOMEUTENTE_NOMEPC con tutti i software installati nella macchina locale. Vi potrà essere molto utile per fare un censimento del SW utilizzato sui client della vostra LAN.
Set objFSO = CreateObject("Scripting.FileSystemObject")
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colSoftware = objWMIService.ExecQuery _
("Select UserName,Caption from Win32_ComputerSystem")
dim nomeUtente
For Each objSoftware in colSoftware
nomeUtente = objSoftware.UserName
nomeMacchina = objSoftware.Caption
next
dim dominio
dim shareFOlder
'******Init Config****************
dominio = "NOME_DOMINIO"
shareFolder = "\\NOME_PC\PUBLIC SHARE\"
'******End Config********************
if not IsNull(nomeUtente) then
nomeUtente = replace(nomeUtente,dominio & "\","")
dim pathFile
pathFile = shareFolder & nomeUtente & nomeMacchina & ".xls"
Dim fso, msg
Set fso = CreateObject("Scripting.FileSystemObject")
If not fso.FileExists(pathFile) Then
Set objTextFile = objFSO.CreateTextFile(pathfile, True)
objTextFile.WriteLine nomeMacchina & vbtab & nomeUtente & vbCrLf
Set colSoftware = objWMIService.ExecQuery("Select Caption,Vendor,Version from Win32_Product")
objTextFile.WriteLine "Caption" & vbtab & "Vendor" & vbtab & "Version"
For Each objSoftware in colSoftware
objTextFile.WriteLine objSoftware.Caption & vbtab & _
objSoftware.Vendor & vbtab & _
objSoftware.Version
Next
objTextFile.Close
End If
set fso = Nothing
End If

Ottenere le informazioni di un PC
Con questo script potrete ottenere alcune informazioni (CPU, Hard Disk, Processore) di un PC.
Set objFSO = CreateObject("Scripting.FileSystemObject")
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colSoftware = objWMIService.ExecQuery ("Select UserName,Caption from Win32_ComputerSystem")
For Each objSoftware in colSoftware
nomeUtente = objSoftware.UserName
nomeMacchina = objSoftware.Caption
next
dim dominio
dim shareFOlder
'******Init Config****************
dominio = "NOME-DOMINIO"
shareFolder = "\\MIO_PC\PUBLIC SHARE\"
'******End Config********************
if not IsNull(nomeUtente) then
nomeUtente = replace(nomeUtente,dominio & "\","")
dim pathFile
pathFile = shareFolder & nomeUtente & nomeMacchina & ".xls"
Dim fso, msg
Set fso = CreateObject("Scripting.FileSystemObject")
If not fso.FileExists(pathFile) Then
'processor informations
Set colSoftware = objWMIService.ExecQuery("Select Manufacturer,Name from Win32_processor")
For Each objSoftware in colSoftware
procManuf = objSoftware.Manufacturer
procName = objSoftware.Name
Next
'Computer Informations
Set colSoftware = objWMIService.ExecQuery("Select Model,Manufacturer from Win32_ComputerSystem")
For Each objSoftware in colSoftware
pcModel = objSoftware.Model
pcManuf = objSoftware.Manufacturer
Next
'HDD Informations
Set colSoftware = objWMIService.ExecQuery("Select Size from Win32_LogicalDisk where caption = 'C:'")
For Each objSoftware in colSoftware
hddSize = objSoftware.Size
'hddVolName = objSoftware.VolumeName
Next
'scrivo il file
Set objTextFile = objFSO.CreateTextFile(pathfile, True)
objTextFile.WriteLine nomeMacchina & vbtab & nomeUtente & vbCrLf
'preparo intestazione file
objTextFile.WriteLine "Processore" & vbtab & "Nome Processore" & vbtab & "Modello PC" & vbtab & "Manufacturer" & vbtab & "HDD Size" & vbCrLf
objTextFile.WriteLine procManuf & vbtab & procName & vbtab & pcModel & vbtab & pcManuf & vbtab & hddSize
objTextFile.Close
End If
set fso = Nothing
end if

Aggiornare una zona DNS
Questo script vi permetterà di aggiornare la vostra zona DNS.
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\MicrosoftDNS")
Set colItems = objWMIService.ExecQuery _
("Select * from MicrosoftDNS_Zone Where Name = 'zona_dns_da_aggiornare'")
For Each objItem in colItems
objItem.UpdateFromDS()
Next 

Stoppare un servizio e i suoi dipendenti
Con questo script, potrete stoppare un servizio (in questo caso il servizio 'alerter') e tutti i servizi che dipendono da quest'ultimo.
strComputer = "nome_computer"
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colServiceList = objWMIService.ExecQuery("Associators of " & "{Win32_Service.Name='alerter'} Where " & "AssocClass=Win32_DependentService " & "Role=Antecedent" )
For each objService in colServiceList
objService.StopService()
Next
Wscript.Sleep 5000
Set colServiceList = objWMIService.ExecQuery ("Select * from Win32_Service where Name='alerter'")
For each objService in colServiceList
errReturn = objService.StopService()
errReturnCode = objService.Change( , , , , "Disabled")
Next 

Attivare l'audit policy sul local security setting
Grazie a questo script, potrete attivsare l'audit sulla security senza mettere mano sulla Console MMC.
Set WshShell = wscript.createobject("wscript.shell")
'audit account logon events s/f
Set oExec = WshShell.Exec("auditpol /enable /account:all")
'audit account management s/f
Set oExec = WshShell.Exec("auditpol /enable /sam:all")
'audit logon/logoff events s/f
Set oExec = WshShell.Exec("auditpol /enable /logon:all")
'audit policy change f
Set oExec = WshShell.Exec("auditpol /enable /policy:failure")
'audit system events s/f
Set oExec = WshShell.Exec("auditpol /enable /system:all") 

Settare la password utente "Never Expired"
Con questo script, potrete cambiare settare, l'attributo della password di un utente, come "Never Expired"
server = "nome_server"
utente = "nome_utente"
Set oUser1 = GetObject("WinNT://" & server & "/" & utente & ",User")
oUserFlags = oUser1.Get("UserFlags")
oPasswordExpirationFlag = oUserFlags OR ADS_UF_DONT_EXPIRE_PASSWD
oUser1.Put "userFlags", oPasswordExpirationFlag
oUser1.SetInfo 

Rinominare un account
Eseguendo questo script, potrete rinominare un account.
strComputer = "nome_macchina"
OldUserName = "administrator"
NewUserName = "administrator2"
Dim User
Dim oComputer
Set oComputer = GetObject("WinNT://" & strComputer & ",Computer")
Set User = GetObject("WinNT://" & strComputer & "/" & OldUserName & ",user")
Call oComputer.MoveHere(User.ADsPath, NewUserName)
RenameAccount = True 

Cambiare il letter drive di un volume
Con questo script potrete cambiare la lettera di un volume. (Compatibile solo con Windows2003)
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colVolumes = objWMIService.ExecQuery("Select * from Win32_Volume Where Name = 'D:\\'")
For Each objVolume in colVolumes
objVolume.DriveLetter = "Z:"
objVolume.Put_
Next 

Monitorare il registro di configurazione
Questo script vi consente di monitorare il registro di configurazione, e rilevare eventuali variazioni nel ramo HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\CSDVersion (personalizzabile)
Set wmiServices = GetObject("winmgmts:root/default")
Set wmiSink = WScript.CreateObject("WbemScripting.SWbemSink", "SINK_")
wmiServices.ExecNotificationQueryAsync wmiSink, _
"SELECT * FROM RegistryValueChangeEvent WHERE Hive='HKEY_LOCAL_MACHINE' AND " & _
"KeyPath='SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion' AND ValueName='CSDVersion'"
WScript.Echo "Listening for Registry Change Events..." & vbCrLf
While(1)
WScript.Sleep 1000
Wend
Sub SINK_OnObjectReady(wmiObject, wmiAsyncContext)
WScript.Echo "Received Registry Change Event" & vbCrLf & _
"------------------------------" & vbCrLf & _
wmiObject.GetObjectText_()
End Sub 

Informazioni su tutti gli utenti
Questo script vi consentirà di ottenere una miriade di informazioni di tutti gli utenti presenti su un computer.
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_NetworkLoginProfile")
For Each objItem in colItems
dtmWMIDate = objItem.AccountExpires
strReturn = WMIDateStringToDate(dtmWMIDate)
Wscript.Echo "Account Expires: " & strReturn
Wscript.Echo "Authorization Flags: " & objItem.AuthorizationFlags
Wscript.Echo "Bad Password Count: " & objItem.BadPasswordCount
Wscript.Echo "Caption: " & objItem.Caption
Wscript.Echo "CodePage: " & objItem.CodePage
Wscript.Echo "Comment: " & objItem.Comment
Wscript.Echo "Country Code: " & objItem.CountryCode
Wscript.Echo "Description: " & objItem.Description
Wscript.Echo "Flags: " & objItem.Flags
Wscript.Echo "Full Name: " & objItem.FullName
Wscript.Echo "Home Directory: " & objItem.HomeDirectory
Wscript.Echo "Home Directory Drive: " & objItem.HomeDirectoryDrive
dtmWMIDate = objItem.LastLogoff
strReturn = WMIDateStringToDate(dtmWMIDate)
Wscript.Echo "Last Logoff: " & strReturn
dtmWMIDate = objItem.LastLogon
strReturn = WMIDateStringToDate(dtmWMIDate)
Wscript.Echo "Last Logon: " & strReturn
Wscript.Echo "Logon Hours: " & objItem.LogonHours
Wscript.Echo "Logon Server: " & objItem.LogonServer
Wscript.Echo "Maximum Storage: " & objItem.MaximumStorage
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "Number Of Logons: " & objItem.NumberOfLogons
Wscript.Echo "Password Age: " & objItem.PasswordAge
dtmWMIDate = objItem.PasswordExpires
strReturn = WMIDateStringToDate(dtmWMIDate)
Wscript.Echo "Password Expires: " & strReturn
Wscript.Echo "Primary Group ID: " & objItem.PrimaryGroupId
Wscript.Echo "Privileges: " & objItem.Privileges
Wscript.Echo "Profile: " & objItem.Profile
Wscript.Echo "Script Path: " & objItem.ScriptPath
Wscript.Echo "Setting ID: " & objItem.SettingID
Wscript.Echo "Units Per Week: " & objItem.UnitsPerWeek
Wscript.Echo "User Comment: " & objItem.UserComment
Wscript.Echo "User Id: " & objItem.UserId
Wscript.Echo "User Type: " & objItem.UserType
Wscript.Echo "Workstations: " & objItem.Workstations
Wscript.Echo
Next
Function WMIDateStringToDate(dtmWMIDate)
If Not IsNull(dtmWMIDate) Then
WMIDateStringToDate = CDate(Mid(dtmWMIDate, 5, 2) & "/" & _
Mid(dtmWMIDate, 7, 2) & "/" & Left(dtmWMIDate, 4) _
& " " & Mid (dtmWMIDate, 9, 2) & ":" & _
Mid(dtmWMIDate, 11, 2) & ":" & Mid(dtmWMIDate, _
13, 2))
End If
End Function 

Attivazione WindowsXP/2003 offline
Questo script vi permetterà di attivare WindowsXp, o Windows2003 in modalità offline, senza la necessità di un collegamento a Internet.
strComputer = "."
Set objWMIService = GetObject("winmgmts:" & _
"{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colWindowsProducts = objWMIService.ExecQuery _
("SELECT * FROM Win32_WindowsProductActivation")
For Each objWindowsProduct In colWindowsProducts
objWindowsProduct.ActivateOffline("1234-1234")
Next 

Rinominare un computer
Questo scritp vi consente di cambiare il nome di un server o di una workstation. Funziona solo su macchine WindowsXP/2003.
strComputer = "."
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colComputers = objWMIService.ExecQuery ("Select * from Win32_ComputerSystem")
For Each objComputer in colComputers
err = ObjComputer.Rename("Nuovo_Nome")
Wscript.Echo err
Next 

Configurare un IP su un macchina
Questo script vi consente di cambiare l'indirizzo IP di una macchina. Il nuovo IP assegnato sarà 192.168.0.10, subnet 255.255.255.0 e gateway 192.168.0.1.
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colNetAdapters = objWMIService.ExecQuery _
("Select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE")
strIPAddress = Array("192.168.0.10")
strSubnetMask = Array("255.255.255.0")
strGateway = Array("192.168.0.1")
strGatewayMetric = Array(1)
For Each objNetAdapter in colNetAdapters
errEnable = objNetAdapter.EnableStatic(strIPAddress, strSubnetMask)
errGateways = objNetAdapter.SetGateways(strGateway, strGatewaymetric)
If errEnable = 0 Then
WScript.Echo "L'indirizzo IP è stato cambiato."
Else
WScript.Echo "L'indirizzo IP non può essere cambiato."
End If
Next 

Elenco files di una cartella
Questo script consente di ottenere l'elenco dei files contenuti in una cartella.
Option Explicit
Const path = "c:\temp"
Dim Text, Title, oFile
Dim fso, oFolder, oFiles, wsh
Text = "Cartella "
Title = "www.sysadmin.it"
Set wsh = WScript.CreateObject("WScript.Shell")
' Crea l'oggetto FileSystemObject per accedere al file system.
Set fso = CreateObject("Scripting.FileSystemObject")
' Restituisce gli oggetti della cartella.
Set oFolder = fso.GetFolder(wsh.ExpandEnvironmentStrings(path))
Text = Text & oFolder & vbCrLf & vbCrLf
Text = Text & "Nome" & vbTab & vbTab & "Size" & vbCrLf
Set oFiles = oFolder.Files ' Get Files collection.
For Each oFile In oFiles ' All files
Text = Text & oFile.Name & vbTab
Text = Text & FormatNumber(oFile.Size, 0) & vbTab
Text = Text & vbCrLf
Next
MsgBox Text, vbOKOnly + vbInformation, Title 

Invio indirizzo IP via email
Questo script vi permette di inviare, via email, l'IP di una macchina remota.
machineName = "nome_macchina"
sender = machinename & " <postmaster@postamaster.it>"
destination = "email_a cui_inviare_IP"
Set objShell = WScript.CreateObject("WScript.Shell")
iReturn = objShell.Run("cmd /c ipconfig /all > " & script_path & "ipconfig_result.txt", 1, TRUE)
Set fsObject = Wscript.CreateObject ("Scripting.FileSystemObject")
Set listFile = fsObject.OpenTextFile (script_path & "ipconfig_result.txt")
do while listFile.AtEndOfStream <> True
emailBody = emailBody & listFile.ReadLine
Loop
listfile.Close
'Invio email
Set objSMTP = Wscript.CreateObject("CDONTS.NewMail")
objSMTP.From = sender
objSMTP.To = destination
objSMTP.Subject = "IP Config " & machineName
objSMTP.Body = emailBody
objSMTP.Send

Data/Ora ultimo cambio password
Visualizza l'ultimo cambio password, con data e ora, per l'utente specificato.
nome_macchina = "inserisci il nome della macchina"
nome_utente = "inserisci il nome utente"
set adsUser = GetObject("WinNT://" & nome_macchina & "/" & nome_utente & ",user")
msgbox "Password cambiata il: " & CStr( _
DateAdd("s", -adsUser.Get("MaxPasswordAge"), _
adsUser.PasswordExpirationDate)) 

Ottenere il SID di un utente
Questo script vi permetterà di ricavare il SID (Security ID) di un utente.
Set usr = GetObject("WinNT://nome_macchina/nome_utente,user")
sid = usr.Get("objectSID")
For Each element In sid
Debug.Print Hex(element)
Next 

Settare la data di scadenza di un account
Settare la data di scadenza di un account, usando il provider WinNT://.
Set usr = GetObject("WinNT://nome_macchina/nome_utente,user")
' Imposta la scadenza dell'account a 90 giorno da oggi
usr.AccountExpirationDate = Now() + 90
usr.SetInfo
' Imposta la scadenza dell'account a NEVER (default)
usr.AccountExpirationDate = "01/01/1970"
usr.SetInfo 

Configurare un utente
Questo script serve a configurare le proprietà di un utente.
strDomain="nome_macchina"
strUser="nome_utente"
Set oUser = GetObject("WinNT://" & strDomain & "/" & strUser)
' Setta l'account expiration a 30 giorni da oggi
dtExpirationDate=Now()
dtExpirationDate=DateAdd("d",30,dtExpirationDate)
oUser.AccountExpirationDate = dtExpirationDate
' Setta il fullname dell'utente
oUser.FullName="Joe Doe"
oUser.SetInfo()
Set oUser=Nothing

Creare un nuovo utente con password
Creare un nuovo utente con password già settata.
strDomain="nome_macchina"
strUser="nome_utente"
Set oDomain = GetObject("WinNT://" & strDomain)
Set oUser = oDomain.Create ("user", strUser)
oUser.SetInfo
oUser.SetPassword "mypassword"
oUser.SetInfo
Set oDomain=Nothing
Set oUser=Nothing 

Rimozione dei computer collegati a un PDC
Questo script serve a rimuovere tutti i computer collegati a un Primary Domain Controller
Sub DelComputerFromPDC(strDomain,strDelComputer)
Dim PrimDomainContr
Set PrimDomainContr = getobject("WinNT://" & strDomain)
Call PrimDomainContr.Delete("Computer", strDelComputer)
End Sub 

Visualizzazione dei computers presenti su un PDC
Visualizzazione di tutti computer presenti su un Primary Domain Controller
Sub PullAllComputers(strDomain)
Dim PrimDomainContr
Set PrimDomainContr = getobject("WinNT://" & strDomain)
PrimDomainContr.filter = Array("Computer")
For each Computer in PrimDomainContr
Response.write Computer.Name
Next
End sub 

Generatore di chiavi alfanumeriche
Il codice che segue serve a generare una chiave di 13 caratteri alfanumerici. Il codice è molto semplice, e personalizzabile: è possibile aggiungere altri caratteri nell'array, ed è possibile modificare la lunghezza della chiave generata.
Function gen_key(digits)
'Create and define array
dim char_array(50)
char_array(0) = "0"
char_array(1) = "1"
char_array(2) = "2"
char_array(3) = "3"
char_array(4) = "4"
char_array(5) = "5"
char_array(6) = "6"
char_array(7) = "7"
char_array(8) = "8"
char_array(9) = "9"
char_array(10) = "A"
char_array(11) = "B"
char_array(12) = "C"
char_array(13) = "D"
char_array(14) = "E"
char_array(15) = "F"
char_array(16) = "G"
char_array(17) = "H"
char_array(18) = "I"
char_array(19) = "J"
char_array(20) = "K"
char_array(21) = "L"
char_array(22) = "M"
char_array(23) = "N"
char_array(24) = "O"
char_array(25) = "P"
char_array(26) = "Q"
char_array(27) = "R"
char_array(28) = "S"
char_array(29) = "T"
char_array(30) = "U"
char_array(31) = "V"
char_array(32) = "W"
char_array(33) = "X"
char_array(34) = "Y"
char_array(35) = "Z"
'Initiate randomize method for default seeding
randomize
'Loop through and create the output based on the the variable passed to
'the function for the length of the key.
do while len(output) < digits
num = char_array(Int((35 - 0 + 1) * Rnd + 0))
output = output + num
loop
'Set return
gen_key = output
End Function
'Write the results to message box, currently setting a 13 digit key
msgbox gen_key(13) & vbcrlf