La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Alessandro Marchisio - gennaio 2005 Window Scripting Host Contenitore per eseguire script in vb o js come semplici file batch (file.js e.vbs) Stesse potenzialità.

Presentazioni simili


Presentazione sul tema: "Alessandro Marchisio - gennaio 2005 Window Scripting Host Contenitore per eseguire script in vb o js come semplici file batch (file.js e.vbs) Stesse potenzialità."— Transcript della presentazione:

1 Alessandro Marchisio - gennaio 2005 Window Scripting Host Contenitore per eseguire script in vb o js come semplici file batch (file.js e.vbs) Stesse potenzialità degli activeX Può essere eseguito da una finestra di windows (Wscript.exe) o da riga di comando (Cscript.exe) L ’ estensione js o vbs richiama il corretto interprete

2 Alessandro Marchisio - gennaio 2005 Window Scripting Host: js Sintassi javascript Metodi e funzioni devono essere chiamati con () Per iterare su collezioni utilizzare un'istanza dell'oggetto Enumerator( collezione ) con i metodi moveFirst(), MoveNext(), item() e AtEnd() Ricordarsi che il caratere "\" deve essere scritto "\\" function ShowFolders() { fso = WScript.CreateObject("Scripting.FileSystemObject"); e = new Enumerator( fso.getFolder("c:\\").subFolders ); for (; !e.atEnd(); e.moveNext()) WScript.stdOut.writeline( e.item().Name) }

3 Alessandro Marchisio - gennaio 2005 WSH: oggetti predefiniti WScript è la base o metodo createObject( nomeoggetto ) può creare oggetti come WShell e Network WshShell o gestione chiavi registri, o msg popup o esegue programmi WshNetwork o accedere a dischi e stampanti di rete

4 Alessandro Marchisio - gennaio 2005 Wscript.echo WScript.echo( “ stringa da visualizzare ” ) o se lo script è runnato da riga di comando produce una riga o se è richiamato con wscript produce una finestra di dialogo

5 Alessandro Marchisio - gennaio 2005 WScript.sleep() WScript.sleep( tempoMsec ) o blocca l ’ esecuzione del programma o tempoMsec è il tempo espresso in millisecondi WScript.timeout = temposec o termina in qualsiasi caso il programma dopo temposec secondi

6 Alessandro Marchisio - gennaio 2005 WScript.quit() o termina l ’ esecuzione del programma o è possibile inserire un numero come argomento del metodo o Tale numero sarà restituito alla variabile d ’ ambiente %errorlevel%

7 Alessandro Marchisio - gennaio 2005 WScript.stdOut Write( stringa ) writeLine( stringaACapo ) writeBlankLines( numRigheVuote ) writeLn() è simile a echo; E ’ possibile andare a capo utilizzando “ \n ” Quest ’ oggetto è disponibile solo da riga di comando

8 Alessandro Marchisio - gennaio 2005 WScript.stdIn read( num caratteri ) readLine() //fino a ENTER readAll() //utilizzato con cmd batch WScript.stdOut.writeBlankLines(5) WScript.stdOut.write("Come ti chiami? ") nome = WScript.stdIn.readLine() WScript.stdOut.writeLine("\nHai inserito: " + nome) skip( num caratteri ) //tralascia skipLine() atEndOfFile() atEndOfStream()

9 Alessandro Marchisio - gennaio 2005 WSH environment (ambiente) ScriptFullName ScriptName Version Build Name FullName Path if (WScript.FullName.indexOf("wscript") != -1) WScript.echo("sto girando da wscript") else WScript.echo("sto girando da cscript")

10 Alessandro Marchisio - gennaio 2005 WHS parametri da riga di comando WScript.arguments o è la collezione che indica i parametri passati da riga di comando o WScript.arguments.length indica il numero dei parametri o WScript.arguments.item( i ) accede all ’ i-esimo elemento Gli item si contano sempre a partire da 0 a collezione.length-1

11 Alessandro Marchisio - gennaio 2005 Collezione Named È utilizzata per un semplice parsing di una stringa tipo: (obbligatorio slash e due pti) /sw1:valore /sw2:valore ecc. param = WScript.arguments.named if ( param. exists ("velocita") ) WScript.echo("Velocita: " + param. item ("velocita")) else WScript.echo("parametro velocita non inserito!")

12 Alessandro Marchisio - gennaio 2005 Wshell: CreateShortcut Wshell è un oggetto figlio di WScript createShortcut è un metodo di un oggetto di classe Wshell che permette la creazione di collegamenti. // creazione istanza di oggetto shell WS = WScript.createObject("WScript.Shell") DesktopFolder = WS.specialFolders("SendTo") pathFileColleg = DesktopFolder + "\\Calcolatrice.lnk" //Creazione collegamento collegamento = WS.createShortcut(pathFileColleg) //Arguments,Description,FullName,Hotkey,IconLocation, //TargetPath,windowStyle,workingDirectory (proprietà) collegamento.targetPath = “ c:\winnt\system32\calc.exe ” collegamento.HotKey = "Ctrl+Shift+c" collegamento.save()

13 Alessandro Marchisio - gennaio 2005 Wshell:Esecuzione eseguibili Oggetto shell: objShell = WScript.CreateObject("Wscript.Shell") programma= ” winver.exe ” modFinestra = 3 aspettaFine = false objShell.run(programma,modFinestra,aspettaFine) modalità finestra puo avere valori da 0 a 10 (massimizzata, minimizzata, con fuoco senza fuoco,ecc.) Il terzo parametro indica se l ’ esecuzione dello script deve aspettare la terminazione del programma lanciato o se debba proseguire in modo sincrono

14 Alessandro Marchisio - gennaio 2005 Wshell: specialFolder Metodo che trasforma un percorso "logico" in uno assoluto percorsi logici: o AllUsersDesktop, AllUsersStartMenu, AllUsersPrograms, AllUsersStartup o Desktop, Favorites, Fonts, MyDocuments, NetHood, PrintHood, Recent, SendTo o StartMenu, Startup, Templates WSh = WScript.createObject("WScript.Shell") WScript.stdOut.write( WSh.specialFolders("MyDocuments") )

15 Alessandro Marchisio - gennaio 2005 Wshell: variabili %ambiente% 4 ambienti: USER, SYSTEM, VOLATILE, PROCESS shell.Environment("ambiente") restituisce una collezione di variabili La collezione Process contiene tutte le variabili d'ambiente per il processo Shell.ExpandEnvironmentStrings("stringa con %var%") WSh = WScript.createObject("WScript.Shell") ambiente = WSh.Environment("System") WScript.stdOut.write( ambiente("path") ) ambiente("path") += ";c:\\wsh;"

16 Alessandro Marchisio - gennaio 2005 Wshell: Gestione Registri shell. RegRead("entry") shell. RegWrite("entry", valore, "tipo") key = "HKLM\\Software\\Microsoft\\" key += "Windows NT\\CurrentVersion\\CurrentVersion" sh = WScript.createObject("WScript.Shell") WScript.stdOut.writeLine( sh.regRead(key) ) key = "HKLM\\Software\\Microsoft\\" key += "Windows NT\\CurrentVersion\\RegisteredOwner" sh.regWrite(key,"Nuovo proprietario","REG_SZ") HKEY_CURRENT_USER= HKCU HKEY_LOCAL_MACHINE= HKLM HKEY_CLASSES_ROOT=HKCR

17 Alessandro Marchisio - gennaio 2005 Wshell: Visualizzatore Eventi shell. logEvent( tipo,"descrizione") Scrive eventi di tipo applicazione. Tipo: 0=Success 1=Error 2=Warning 4=Information 8=AuditSucces 16=AuditFailure objShell = WScript.CreateObject("Wscript.Shell") objShell.LogEvent( 0,"Test Success Event") objShell.LogEvent( 1,"Test Error Event") objShell.LogEvent( 2,"Test Warning Event") objShell.LogEvent( 4, "Test Information Event") objShell.LogEvent( 8, "Test Success Audit Event") objShell.LogEvent( 16, "Test Failure Audit Event")

18 Alessandro Marchisio - gennaio 2005 Wshell: SendKeys shell.sendkeys( stringa ) L'applicazione deve avere il fuoco E' possibile inviare combinazioni di tasti ALT: % CTRL: ^ Shift: + {UP} {HOME} {BS} … {F1} INVIO: ~ shell.appActivate("titoloFinestra") WScript.timeout = 4 sh = WScript.CreateObject("WScript.Shell") sh.Run("Notepad.exe") for (ok = 0; !ok; ) ok = sh.appActivate("Blocco note") sh.sendKeys("Ciao~Ciao%fs")

19 Alessandro Marchisio - gennaio 2005 Wshell: currentDirectory shell.currentDirectory Accessibile in lettura e in scrittura Cambia la directory per la durata del processo sh = WScript.CreateObject("WScript.Shell") out = WScript.stdOut out.writeLine("Directory di partenza: " + sh.currentDirectory) sh.currentDirectory = "I:\\" out.writeLine("Directory attuale: " + sh.currentDirectory)

20 Alessandro Marchisio - gennaio 2005 Wshell: popup WScript.echo("stringa") non è configurabile shell.popUp("stringa",timeout, titolo, icone+pulsanti ) Icone: stop(16) ? (32) ! (48) i (64) Pulsanti: Ok (0), Ok/Canc (1), Yes/No(4) Abort/Retry/Ignore(2), Yes/No/Cancel (3) retry/cancel (5) sh = WScript.CreateObject("WScript.Shell") out = WScript.stdOut sh.popup("Tra poco scompare\nAffrettati a rispondere",5,"Esempio",48 + 4) out.writeLine("Programma terminato")

21 Alessandro Marchisio - gennaio 2005 Network Drive mapNetworkDrive(localName,RemoteName, updateProfile, username, password ) removeNetworkDrive( localName, flagSave, flagProfile ) EnumNetworkDrives() restituisce una collezione con localName, remoteName nwk = WScript.CreateObject("WScript.Network") nwk.mapNetworkDrive("X:", "\\\\lucag\\download",0) Drives = nwk.EnumNetworkDrives() for( i = 0; i < Drives.length; i+=2) WScript.Echo( Drives.Item(i) + "\t" + Drives.Item(i+1) ) nwk.removeNetworkDrive("X:")

22 Alessandro Marchisio - gennaio 2005 Network Printers AddWindowsPrinterConnection(Risorsa Unc) AddPrinterConnection(localPort, RisorsaUnc) removePrinterConnection(RisorsaUnc, flagforced, flagProfile ) EnumPrinterConnections() restituisce una collezione con localName/port e UNCprinter SetDefaultPrinter(Risorsa Unc) nwk = WScript.CreateObject("WScript.Network") nwk.addPrinterConnection("LPT1:","\\\\marco\\hp2300") //equivale a net use LPT1: \\marco\hp2300

23 Alessandro Marchisio - gennaio 2005 Network properties CompterName UserDomain Username sola lettura maggiori informazioni di possono ottenere con il protocollo LDAP su ADSI function whoami() { var nwk = WScript.CreateObject("WScript.Network") var out = WScript.stdOut out.writeLine("ComputerName:" + nwk.computerName) out.writeLine("Userdomain:" + nwk.userDomain) out.writeLine("UserName:" + nwk.userName) } whoami()

24 Alessandro Marchisio - gennaio 2005 File System Object: Drives objFSO = WScript.CreateObject("Scripting.FileSystemObject") collDrives= objFSO.Drives DriveObj = objFSO.GetDrive("c:") DriveObj ha le seguenti proprietà: AvailableSpace, DriveLetter, FileSystem, IsReady, Path, RootFolder, SerialNumber, ShareName, TotalSize, VolumeName, DriveType

25 Alessandro Marchisio - gennaio 2005 File System Object: Folder objFSO = WScript.CreateObject("Scripting.FileSystemObject") objFold = objFSO.getFolder(path) objFold ha le seguenti proprietà: DateCreated, DateLastAccessed, DateLastModified, Drive, IsRootFolder, Name, ParentFolder, Path, ShortName, ShortPath, Size, Type objFold ha due collezioni: Files e SubFolders

26 Alessandro Marchisio - gennaio 2005 File System Object: Folder objFSO = WScript.CreateObject("Scripting.FileSystemObject") objFSO.CreateFolder(pathNewFolder) o se esiste già da errore objFSO.DeleteFolder(pathNewFolder) objFSO.CopyFolder(pathSourceFolder, pathDestFolder,flagOverWrite) - xcopy /x objFSO.MoveFolder(pathSourceFolder, pathDestFolder) o serve anche per rinominare cartelle.

27 Alessandro Marchisio - gennaio 2005 File System Object: File objFSO = WScript.CreateObject("Scripting.FileSystemObject") FileObj = objFSO.GetFile(pathFile) flag = objFSO.FileExists(pathFile) FileObj.Attributes 1=ReadOnly 2=Hidden 4=System 32=Archive 64=Link 2048=Compresso Metodi: GetAbsolutePathName, GetParentFolderName, GetFileName, GetBaseName, GetExtensionName, GetFileVersion

28 Alessandro Marchisio - gennaio 2005 File System Object: Writing File objFSO = WScript.CreateObject("Scripting.FileSystemObject") FileObj = objFSO.OpenTextFile(pathFile, writeAppend, Scrivi, fmt) write=2 Append=8 scriviFlag=true, crea se non esiste, 0ascii/-1Unicode FileObj.write("stringa") FileObj.writeLine("stringa") FileObj.writeBlankLines(num) FileObj.close()

29 Alessandro Marchisio - gennaio 2005 File System Object: Reading File objFSO = WScript.CreateObject("Scripting.FileSystemObject") Legge solo file Ascii e solo dall'inizio alla fine Un file aperto in lettura non può essere scritto Problemi leggendo un file di lunghezza 0, meglio controllare la proprietà size FileObj = objFSO.OpenTextFile(pathNameFile,1) FileObj. Read(numCar).readline().readAll() skip(), skipLine() AtEndOfStream

30 Alessandro Marchisio - gennaio 2005 wshController Permette di eseguire script locali su una macchina remoto createScript(percorsoScript, computer) Lo script creato ha metodi execute e proprietà status (0=run,1=runnig,2=end) Questi script non devono essere interattivi Metodo ConnectObject(oggetto, "nome") richiama nome_start, nome_error, nome_end

31 Alessandro Marchisio - gennaio 2005 Script sicuri HKEY_LOCAL_MACHINE\Software\Microsoft \Windows Script Host\Settings\TrustPolicy o 0: tutti gli script possono essere eseguiti o 1: messaggio di warning o 2: solo script "signed" SignObj=WScript.CreateObject("Scripting.Signer") SignObj.SignFile( nomeFile, nomeCertificato ) SignObj.verifyFile( nomeFile, flagShowWarning ) //true-false


Scaricare ppt "Alessandro Marchisio - gennaio 2005 Window Scripting Host Contenitore per eseguire script in vb o js come semplici file batch (file.js e.vbs) Stesse potenzialità."

Presentazioni simili


Annunci Google