Ti trovi qui:

ActiveXperts.it > Scripting Component > Introduzione VBScript

ActiveXperts Scripting Component
ActiveXperts Scripting Component

quicklinks

Introduzione a VBScript

VBScript e' un linguaggio base che molte applicazioni popolari (ad esempio, Microsoft Outlook, Internet Explorer - IE) e prodotti (ad esempio molti sviluppatori, Microsoft Visual Studio - VS) usano. VBScript discende dal Visual Basic, Applications Edition (VBA), che e' il linguaggio Visual Basic (VB) e il contatore dei prodotti Microsoft Office. Sebbene Microsoft VBScript inizialmente fosse progettato come un linguaggio di scripting per il Web, VBScript e' diventato un linguaggio popolare per la scrittura di Windows-oriented file batch tramite il Windows Scripting Host (WSH). Con WSH, il sistema operativo Windows considera un file VBScript come un eseguibile, in altre parole, come un file batch (. Bat) o eseguibile (. Exe). Come risultato, e' possibile utilizzare le funzioni VBScript ricchi e potenti e la sintassi per comporre a livello di sistema script.

Si forniranno, con uno sguardo globale all'evoluzione VBScript su Windows, degli scenari basati su scripting. Si scavera' anche in profondita' in tutti gli aspetti della lingua. In questa prima parte, si dara' una panoramica del contesto di sistema in cui VBScript funziona per farvi conoscere il WSH e ambienti di script ActiveX. Poi, si descriveranno tre elementi di base della sintassi: variabili, costanti e tipi di dati o semplicemente tipi.

Come VBScript si adatta allo scenario di script

VBScript e' un linguaggio di scripting che molte persone considerano come la versione moderna di MS-DOS file batch. Tuttavia, poiche' VBScript ha ereditato la ricca sintassi VBA e l'espressivita', VBScript è più simile a un linguaggio di programmazione rispetto a un linguaggio di scripting semplice. A differenza dei linguaggi di programmazione, VBScript non utilizza un compilatore, ma elabora ancora il codice abbastanza rapidamente. Nel complesso, VBScript offre la potenza e la progettazione di un linguaggio di programmazione, pur mantenendo la facilità di un linguaggio di scripting di utilizzo.

Nel mondo Windows, e' possibile utilizzare VBScript all'interno di una delle quattro tecnologie o ambienti: WSH, visite shell basatE su Web, Active Server Pages (ASP), e IE. Di solito si utilizza il codice VBScript all'interno di visite shell web-based, ASP, e IE per la produzione di pagine HTML, mentre si utilizza VBScript all'interno di WSH per automatizzare le attività di amministrazione dei sistemi. Cosi', questa serie coprira' VBScript all'interno di un WSH solo.

I ruoli di WSH e ActiveX

WSH e' il modulo del sistema che trasforma un file VBScript in un file eseguibile di Windows. WSH e' prontamente disponibile per i vari sistemi operativi Windows. In Windows 2000 (Win2K), WSH e' un componente standard del sistema operativo. In Windows 98, WSH e' un componente facoltativo che e' possibile selezionare durante l'installazione. Per Windows NT 4.0 e Windows 95, WSH e' disponibile come add-on.

WSH è costituito da un host basato su Windows (wscript.exe), una console basata su host (cscript.exe), il modello a oggetti WSH (wshom.ocx), il motore di scripting VBScript (vbscript.dll), e il JScript motore di scripting (jscript.dll). Sia wscript.exe e lavoro cscript.exe come un motore di runtime che gestisce ed esegue file VBScript. Il modello a oggetti WSH e' una libreria di runtime di built-in oggetti COM. La presenza di COM e' un aspetto importante di WSH e VBScript. Poiché con VBScript e' possibile creare un'istanza di oggetti COM, l'estensibilita' WSH non ha limiti. Come risultato, e' possibile scrivere script che accedono qualsiasi funzione del sistema e che offrono ogni tipo di comportamento. Il VBScript e JScript motore di script analizzano e interpretano rispettivamente i codici VBScript e JScript.

La tecnologia alla base che permette di eseguire WSH VBScript, JScript, e altri file di lingua è ActiveX Scripting. ActiveX Scripting e' basato su un specifico COM che consente a Microsoft e a fornitori di terze parti di fornire i motori di runtime per praticamente qualsiasi linguaggio di scripting. Qualsiasi applicazione a 32 bit di Windows e' in grado di ospitare un modulo conforme di ActiveX Scripting e gestire ed eseguire file di script scritti in varie lingue. In altre parole, l'interfaccia ActiveX Scripting permette a Windows di supportare tutti i tipi di linguaggi di scripting.

Ad esempio, WSH e IE sono applicazioni che ospitano tutti gli script compatibili con i motori di ActiveX e che nativamente distribuiscono i motori di script VBScript e JScript. L'affermazione che WSH e IE supportano solo VBScript e JScript significa che WSH e IE distribuiscono i parser solo per quelle lingue. (Il parser è il modulo di runtime che interpreta in realta' un file di script, convalida la sintassi e l'elaborazione delle istruzioni. La presenza di un parser di runtime e' cio' che rende un linguaggio di scripting diverso da un linguaggio compilato come C + +.) Altre aziende spediscono motori di script ActiveX per il Perl, REXX, e Python, ed è possibile utilizzare i motori di script per IE e anche WSH.

Funzionalita' VBScript

VBA ha molte funzioni potenti e fornisce un eccellente supporto per le variabili, tipi di dati, e la gestione degli errori. VBScript ha ereditato gran parte della funzionalità di VBA, incluso il supporto per operazioni matematiche, matrici, controllo di flusso, conversioni di dati, oggetti COM, le procedure, la data, l'ora e la manipolazione delle stringhe. Tuttavia, poiche' Microsoft VBScript era inizialmente progettato per il Web, Microsoft ha eliminato le funzioni dirette I / O e l'essenziale supporto dei tipi per aumentare la velocità di elaborazione di VBScript. Di conseguenza, VBScript non supporta tipi espliciti e non include i comandi nativi per accedere direttamente sul disco della macchina client.

Tuttavia, se si utilizza VBScript localmente all'interno dell'ambiente WSH, è possibile utilizzare due oggetti COM esterni per fornire le funzionalità altrimenti mancanti: FileSystemObject, che si usa per modificare file e cartelle, e WScript, che si usa per leggere e scrivere al Registro di sistema e altro ancora. Il scrrun.dll e file Wshom.ocx includono il FileSystemObject e le librerie di runtime oggetti WScript, rispettivamente (Scrrun.dll è un file di sistema in VBScript e Win98.).

Nell'ultima versione di VBScript, Microsoft ha aggiunto diverse nuove funzioni ed ha introdotto le classi e le espressioni regolari. Queste aggiunte stanno muovendo VBScript più verso il rango di un linguaggio di programmazione efficace.

Tre Elementi della sintassi di base

La sintassi di base VBScript comprende molti elementi. Tre elementi importanti sono le variabili, i costanti e i tipi. Una variabile e' un oggetto che contiene i dati che possono cambiare durante l'esecuzione di uno script, mentre una costante è un elemento che contiene i dati che non possono cambiare durante l'esecuzione di uno script. Si classificano i dati come variabili, mentre le costanti come tipi. Ad esempio, lunghi numeri interi sono un tipo chiamato lunga, mentre un valore a doppia precisione a virgola mobile sono un tipo chiamato doppio, e il testo è un tipo chiamato String.

Quando si utilizza linguaggi di programmazione compilati, è necessario dichiarare esplicitamente le variabili che si intendono utilizzare e specificare i tipi di quelle variabili. In script VBA e VB, ad esempio, si utilizza l'istruzione Dim come qualificatore per dichiarare le variabili e la loro tipologia:

Dim x As Long

Quando si utilizza VBScript, non si e' tenuti a dichiarare esplicitamente le variabili e se non si dichiarano le variabili, non e' possibile dichiarare il loro tipo. Tuttavia, una dichiarazione implicita (dichiarazione che si verifica automaticamente quando si utilizza una variabile in uno script) è una potenziale fonte di errori, perché gli errori di battitura in genere passare inosservati fino a quando si verifica un problema. Per evitare questi problemi, è possibile aggiungere il comando Option Explicit nella parte superiore del vostro script. Il comando Option Explicit costringe il motore di runtime ad accettare solo quelle variabili che si dichiarano esplicitamente. Se si utilizza una variabile che non è stata dichiarata, viene visualizzato un messaggio di errore. È possibile dichiarare variabili con uno di questi comandi:

Dim x
Dim x,y
Private x,y
Public x,y,z

E' necessario utilizzare i comandi interamente all'inizio di uno script mentre è possibile utilizzare le istruzioni Dim in qualsiasi punto. Le variabili che si dichiarano all'inizio dello script sono script di dichiarazioni a livello che si applicano a tutte le subroutine e le funzioni in uno script. Le variabili che si dichiarano all'interno di una subroutine o di una funzione sono a livello di procedura di dichiarazioni che si applicano solo a quel sottoprogramma locale o funzione.

Si noti che le istruzioni Dim, privato e pubblico non comprendono il qualificatore. In VBScript, non è possibile dichiarare in modo esplicito i tipi. Se si utilizza una dichiarazione come Dim As Long nel codice VBScript, si ricevera' un termine di errore previsto perché il parser VBScript non capirà le informazioni aggiuntive che la contiene come qualificatore. Dopo un'istruzione Dim, Privata, o Pubblica, VBScript si aspetta di trovare una virgola seguita da un'altra dichiarazione di variabile, due punti seguiti da una dichiarazione, o una linea di ritorno specificando il fine dell'istruzione.

La mancanza di una dichiarazione di tipo non significa che VBScript non supporta i tipi. Piuttosto, VBScript considera tutte le variabili dello stesso tipo: Variant. Come mostra il codice, il parser gestisce tutte le variabili attraverso il tipo Variant generico. Se Microsoft VBScript è stato progettato in modo che si doveva dichiarare esplicitamente i tipi, il parser avrebbe dovuto eseguire il controllo di tipo estensivo. A differenza dei linguaggi compilati, VBScript esegue tutte le sintassi e le verifiche del tipo in fase di esecuzione. Così, l'ipotesi di VBScript che tutte le variabili sono il tipo Variant salva il parser con una grande quantità di tempo.

Varianti, tipi e sottotipi di lavoro

Affermare che tutte le variabili siano dello stesso tipo potrebbe sembrare plausibile, soprattutto quando alcuni tipi sono dissimili, come la lunga e String. Tuttavia, VBScript raggruppa con successo tutte le variabili come Variant perché esso è un tipo generico che fornisce un'interfaccia di programmazione uniforme per gli altri tipi. In altre parole, una variante è un riferimento generico (cioè, un alto livello puntatore) per i tipi. Quando si specifica:

Dim x

si sta dicendo a VBScript di creare una variabile vuota Variant. Quando si specifica:

x = 45

si sta dicendo a VBScript di riempire la variabile x Variant con il valore numerico di 45 e di aggiungere informazioni che registrano il contenuto di dati del valore come un Integer. Questa informazione aggiuntiva è chiamato il sottotipo. (Le persone spesso si riferiscono a sottotipi come tipi di variabili.) Si può pensare a una variante come un supertipo resa dalla coppia. In altre parole, una variante è una struttura di dati che include diversi campi interni, tra campi per il valore e sottotipo. Quindi, anche se VBScript non supporta tipi espliciti, VBScript fa tipi di supporto di livello secondario (da qui, il termine sottotipo).

Una variabile con il sottotipo vuoto è diverso da una variabile con il sottotipo Null. Una variabile vuota non contiene alcun dato, una variabile null non contiene dati validi.

Poiche' il tipo Variant è un alto livello di riferimento, e' possibile modificare il valore di una variabile e campi sottotipo in fase di esecuzione mediante l'assegnazione di un nuovo valore alla variabile. Ad esempio, il Listato 1 cambia il contenuto di una variabile. Si inizia il codice dichiarando Dim x e Dim y, che spinge VBScript a creare due variabili vuoti chiamati x e y. Quindi si definisce la variabile x con "Ciao!" In risposta, VBScript determina che il valore "Ciao!" e' un sottotipo String e riempie il valore della variabile x e campi sottotipo interne con "Ciao!" e String, rispettivamente. Allo stesso modo, quando si imposta la variabile y a 45, VBScript determina che il valore di 45 e' un sottotipo Integer e riempie il valore della variabile y e campi sottotipo interne con 45 e Integer, rispettivamente. Infine, e' possibile impostare la variabile x ad un nuovo valore della variabile y (ad esempio, 45), che spinge VBScript per modificare i campi della variabile x da "Ciao!" e String e Integer a 45. Come risultato, si ha che le variabili x e y ora hanno lo stesso valore e sottotipo.

È necessario essere attenti a non impostare valori ambigui. Ad esempio, il valore di 1,0 può essere un doppio, sottotipo singola, o valuta. Per impostazione predefinita, VBScript considera 1,0 un sottotipo Double. Ancora più ambiguo è il valore di 1. Può essere un valore booleano, Integer, sottotipo a lungo, o Byte. Per impostazione predefinita, VBScript considera 1 come un sottotipo Integer.

Identificazione Sottotipo

Poiche' il parser dichiara sottotipi, a volte è necessario per determinare il sottotipo che il parser deve assegnare per una particolare variabile. VBScript offre molte funzioni che identificano sottotipi, tra cui la funzione TypeName, la funzione VarType, e IsXxx() hanno diverse funzioni.

TypeName. È possibile utilizzare la funzione TypeName per identificare il nome sottotipo di una specifica variabile. Listato 3 illustra come eseguire questa funzione. Se si imposta la variabile x al numero 45, TypeName restituisce un nome di sottotipo Integer. Se si imposta la stessa variabile x per il testo "Ciao!", TypeName restituisce un nome di sottotipo String. Infine, se si imposta la variabile x per il valore di data ora, TypeName restituisce un nome sottotipo di Data.

Perché non TypeName restituisce il nome del sottotipo String quando si imposta la variabile x per "Now"? In VBScript, è possibile impostare il testo tra virgolette. Se si imposta la variabile x per "Now" al posto di Ora, TypeName restituisce un nome di sottotipo String. Senza le virgolette, e' ora una funzione VBScript che restituisce la data e l'ora corrente.

VarType. In Windows, ogni sottotipo ha un numero ID. È possibile utilizzare la funzione VarType per identificare una variabile numero ID sottotipo. VarType funziona in modo simile a TypeName tranne che VarType restituisce un numero invece di una stringa. Se avete bisogno di confrontare i sottotipi due variabili 'o controllare un sottotipo contro un dato valore, utilizzando VarType è preferibile perché lavorare con i numeri si salva da eventuali errori di battitura. Per questo motivo gli sviluppatori esperti silly-molti e sceneggiatori hanno incontrato bug misteriosi solo per scoprire più tardi che le stringhe digitate erroneamente sono state i ​​colpevoli.

IsXxx(). Una serie di IsXxx() funzioni consente di determinare se una variabile o una costante specifica è un sottotipo certa. Per verificare se una variabile o costante è un oggetto Array, Date, Empty, Null, o sottotipo oggetto, si utilizza la sintassi:

IsXxx(expression)

dove Xxx e' il nome del sottotipo e l'espressione è la variabile o costante che si desidera controllare. Ad esempio, se si desidera verificare se la variabile MyVar ha il sottotipo Data, è necessario specificare:

IsDate(MyVar)

Come tutte le funzioni Is(), IsDate restituisce il valore booleano. Se IsDate restituisce il valore true, il sottotipo della variabile è data. Se IsDate restituisce un valore false, il sottotipo della variabile non è Data.

Per sottotipi numerici (ad esempio, Long, Integer, Double), si utilizza la sintassi:

IsNumeric(expression)

in cui l'espressione e' la variabile o costante che si desidera controllare.

Operazioni sottotipo avanzate

In un ambiente di programmazione senza tipi espliciti, non si potrebbe aspettare di ottenere un errore di tipo non corrispondente. Tuttavia, se si cerca il codice del Listato 4, si ottiene la finestra di messaggio nella schermata 1. Questo errore si verifica perché non è possibile sommare numeri e stringhe, che è ciò che l'operazione x + y cerca di fare. Quando si utilizza VBScript, non si può dimenticare le regole elementari sui tipi. Anche se il motore di script dichiara, inizializza, e passa le variabili per voi, è comunque necessario controllare le operazioni sottotipo avanzate attraverso le funzioni di conversione. VBScript utilizza un onnicomprensiva, tipo indistinto per ottenere prestazioni migliori, riducendo la quantità di type-checking. VBScript non utilizza il tipo indistinto in modo che gli utenti possano liberamente combinare dati eterogenei.

Funzioni di conversione consentono di convertire il valore da un sottotipo ad un altro (ad esempio, un valore Long in un valore String) o convertire un valore da un sistema numerico o alfanumerico ad un altro (ad esempio, un valore esadecimale in un valore ottale). La Tabella 2 descrive le funzioni di conversione che è possibile utilizzare. La colonna VarType visualizza l'ID del sottotipo coinvolto.

Quando si utilizzano le funzioni di conversione, bisogna tenere a mente tre punti. In primo luogo, non è possibile passare una stringa alfanumerica di una funzione di conversione che restituisce un numero (ad esempio, CInt, CLng). Se si tenta di fare ciò, si ricevera' un errore di tipo non corrispondente. (CLng converte una stringa come 3 al sottotipo a lungo, ma non è una stringa alfanumerica come 3A.) In alternativa, è possibile utilizzare CInt, CLng, o una funzione simile per adattare i risultati delle operazioni aritmetiche.

In secondo luogo, la funzione CStr offre una grande flessibilita' quando si sta convertendo un'espressione per il sottotipo String. Ad esempio, se l'espressione e' una data, si riceve una stringa di data che segue formato di data breve vostro OS. Nel caso di una espressione booleana, la stringa specifica true o false.

Terzo, la funzione CDate converte in modo efficace una stringa o un numero in una data. Tuttavia, è possibile evitare di utilizzare una funzione di conversione assegnando il valore di data alla variabile. Hai solo bisogno di racchiudere il valore di hash (#):

MyDate = "#4/5/99#"

Costanti

Una costante e' un valore esplicito (numero, stringa o altro) a cui VBScript o lo sceneggiatore assegna un nome. Costanti che assegna VBScript sono costanti intrinseche. Queste costanti non cambiano. VBScript definisce diverse categorie di costanti intrinseche per l'uso in vari contesti. Ad esempio, la categoria colore include costanti intrinseche che definiscono vari colori (ad esempio, vbBlack specifica il colore nero) e la categoria String include costanti intrinseche che definiscono il testo funzioni correlate (ad esempio, vbTab specifica una scheda orizzontale).

Costanti che assegnano gli sceneggiatori non possono cambiare durante la vita dello script. Non utilizzare le costanti al posto delle variabili. Invece, è possibile utilizzare le costanti al posto dei valori espliciti. L'uso delle costanti è più gestibile rispetto all'utilizzo di valori espliciti per due motivi. In primo luogo, se è necessario modificare il valore di una costante, si modifica solo una volta. In caso contrario, avresti bisogno di cambiare questo valore ogni volta che si verifica nello script. In secondo luogo, le costanti rendono gli script più facile da leggere, soprattutto se si assegna un nome mnemonico alla costante.

Per creare una costante, si utilizza la sintassi:

const MyVal = 1234

in cui MyVal e' il nome costante e 1234 è il valore di tale costante. Il valore deve essere esplicito. Non è possibile utilizzare una funzione o un'altra costante come valore. Ad esempio, il codice seguente non è valido:

const CRLF = Chr(13) & Chr(10)

Dopo aver creato la costante, si utilizza il nome costante al posto di specificare che il valore esplicito.

ASP

Active Server Pages (ASP) di script HTML combina con VBScript, JScript o qualsiasi altro linguaggio di scripting compatibile ActiveX. In parte a causa della grande popolarità di Visual Basic (VB), VBScript, che è un sottoinsieme di VB, è probabilmente il linguaggio di scripting più utilizzato nelle applicazioni ASP. VBScript condivide la sintassi e l'oggetto-convenzioni di denominazione del suo progenitore più compatibile. Tuttavia, le pagine ASP non sono solo annunci di script ActiveX. Si crea pagine ASP combinando VBScript e HTML. All'interno delle pagine, è possibile utilizzare i tag di script VBScript speciali da inserire nel codice HTML. Il codice in Listato mostra la forma abbreviata del formato tag che è possibile utilizzare per Demark VBScript in pagine ASP.

Il modo in cui gli script ASP genera l'output è diverso dal metodo che utilizza standard di VB. È possibile indirizzare l'output per l'utente o con il simbolo = o utilizzando il metodo Write dell'oggetto Response. Le righe di codice seguenti illustrano due modi per indirizzare le informazioni verso il browser da uno script ASP.

<%
	= "This writes line one"
   Response.Write("This writes line two")
%>

Il codice nel Listato B crea due semplici scatole di testo HTML che consentono un client Web immettere un ID utente e una password. Non a caso, il nome del campo ID utente è userid, e il nome del campo della password è password. Dopo aver compilato i campi, i click Web utente Invia per inviare il form al suo gestore di moduli. Il gestore del modulo è una tecnica generica che può essere utilizzato in tutti gli ambienti di sviluppo HTML. Se si sta sviluppando in Visual InterDev (VID), è possibile usufruire di VIDEO di controlli Design-Time, che consentono di definire visivamente i gestori di eventi per l'applicazione Web.. In questo caso, il gestore del modulo è una pagina ASP denominata loginrsp.asp. Il codice sorgente per il loginrsp.asp contiene le seguenti VBScript:

<%
   Dim sUser
   Dim sPwd
   ' Retrieve form information
   sUser = Request.Form("userid") 
   sPwd = Request.Form("password")
%>

E' possibile utilizzare il metodo Form dell'oggetto Request per accedere ai valori immessi dagli utenti nelle caselle di testo nel modulo precedente. Lo script fornisce il nome dell'oggetto inout HTML al metodo modulo. Per recuperare il valore di un oggetto, e' necessario assegnare il metodo di modulo il nome esatto dell'oggetto nella pagina originale. In questo caso, lo script ASP recupera i valori per le caselle di testo di nome userid e password.

Windows Script Host (WSH)

Lo script termini e linguaggio di scripting sono stati ampiamente usato (e abusato!) per indicare qualsiasi cosa a seconda dell'autore e del contesto. I fini di questa guida sono quelli di eseguire script come file di testo relativamente piccoli scritti ed eseguiti senza un ambiente di sviluppo speciale, e di identificare un linguaggio di scripting come l'applicazione che interpreta ed esegue uno script. Confronta che con i programmi che sono compilati dal codice sorgente (anche i file di testo) in codice macchina specifico oggetto del processore che viene caricato in memoria ed eseguito dal sistema operativo.

Larry Wall (creatore di Perl, un popolare "linguaggio di scripting") dice: "Uno script è ciò che si dà agli attori. Un programma è ciò che si dà al pubblico."

Script e linguaggi di scripting che ben si adattano ad automatizzare procedure ripetitive e semplificare le operazioni sui file, tipicamente in ambiente operativo dei comandi shell di sistema. Windows supporta scripting con "DOS" file batch e, che inizia con Windows 98, Windows Script Host (WSH). WSH è indipendente dalla lingua. VBScript e JScript sono inclusi in tutte le distribuzioni di Windows dopo Windows 98 (per Windows 95 è possibile installare WSH, un download gratuito da Microsoft). Tuttavia, molte altre lingue sono supportate. Ad esempio, se si scarica ed installa ActivePerl, Windows Script Host eseguirà gli script PerlScript.

Programmi ​​(ad esempio "script"), scritti in un linguaggio supportato da WSH sono file di testo ASCII. Tutto quello che si deve scrivere in un programma WSH è un editor di testo come Blocco note di Windows (o una qualsiasi delle molte sostituzioni Blocco note). Tuttavia, per eseguire un programma WSH è necessario Windows Script Host installato sul sistema e di un interprete, chiamato anche il motore di script, per il programma. Tutte le versioni di Windows da Windows 98 in poi includono il Windows Script Host e "motori" per VBScript e JScript (la versione Microsoft di JavaScript).

WMI

WMI contiene diverse caratteristiche chiavi che sono utili per la risoluzione di complesse attività amministrative. Tali caratteristiche e funzionalità includono Uniform API di scripting, la reperibilità e la navigazione, capacità di query, e la pubblicazione eventi potente e abbonamento. Tuttavia, quello che trovo più eccitante di WMI è la sua capacità di gestione a distanza. Gli oggetti che si gestiscono in WMI sono, per definizione, disponibili per le applicazioni e gli script sia in locale che in remoto. Nessun lavoro supplementare è necessaria per la gestione di oggetti remoti.

WMI è l'implementazione Microsoft di Web-Based Enterprise Management (WBEM), che è un'iniziativa industriale per lo sviluppo di una tecnologia standard per l'accesso alle informazioni di gestione in un ambiente aziendale. Informazioni di gestione includono i dettagli sullo stato della memoria di sistema, inventari delle applicazioni client attualmente installate e altre informazioni sullo stato del client. WMI in grado di gestire molte attività, che vanno dalla configurazione della workstation semplice completa di gestione aziendale su più piattaforme. Quando si implementa WMI su piattaforme Windows, la tecnologia permette di progettare Common Information Model (CIM) dal Distributed Management Task force (DMTF) per rappresentare sistemi, applicazioni, reti e altri componenti gestiti. CIM può modellare qualsiasi cosa in un ambiente gestito indipendentemente dalla posizione dei dati di origine. Oltre alla modellazione dei dati, WMI offre un potente set di servizi di base che includono query di recupero delle informazioni e notifica degli eventi. Una interfaccia di programmazione COM rende possibile accesso a tali servizi e ai dati di gestione, il che significa che è possibile utilizzare gli script WSH per sfruttare la tecnologia. Microsoft supporta i componenti del sistema operativo di base WMI in Windows 2000, Windows NT 4.0 con Service Pack 4 (SP4) o versione successiva, Windows 98 e Windows 95 OEM Service Release 2 (OSR2).

Esecuzione in remoto con Exec.vbs

Sia il WMI SDK che Microsoft Windows 2000 Resource Kit contengono uno script WSH chiamato exec.vbs. E' possibile utilizzare per exec.vbs

  • Eseguire processi su server remoti e workstation
  • Interrompere i processi su server remoti e workstation

Molta poca documentazione esiste per spiegare la funzionalità di exec.vbs. Questa mancanza di documentazione è un peccato perché exec.vbs è uno script potente che si può mettere subito al lavoro per aiutare ad automatizzare le responsabilità di lavoro.

È possibile scaricare exec.vbs dalla libreria di codici sul sito Web IIS Administrator, oppure è possibile estrarre dall'interno del SDK WMI sul sito web Microsoft Developer Network (MSDN) sito web. È possibile inserire lo script dove si sono accumulati gli script di gestione WSH, ma può risiedere in qualsiasi luogo.

Sebbene exec.vbs non abbia alcuna documentazione, come ogni script WSH, la sua funzionalità include una breve documentazione di utilizzo quando si esegue lo script con i parametri guida (ad esempio, / h, /?, o h). La figura 1 mostra come eseguire lo script con il parametro Aiuto / h. Si noti alcuni punti sulla Guida di utilizzo in Figura 1. In primo luogo, è necessario specificare il nome utente e la password che dispone di privilegi sulla macchina remota. Ovviamente, non è possibile eseguire i processi indiscriminatamente su qualsiasi computer in rete nell'ambito di un contesto di protezione anonimo. Inoltre, se si desidera eseguire i processi su macchine su Internet, è necessario fare un certo lavoro firewall. L'esecuzione del processo remoto WMI opera sulla porta 512, che ogni firewall blocca per impostazione predefinita. In secondo luogo, è possibile specificare un nome di file di output sul computer locale in grado di catturare qualsiasi output su schermo e scrivere in un file per la diagnosi in seguito. È possibile utilizzare questa funzione quando si esegue exec.vbs in un ambiente di linea (ad esempio, quando il Win2K o NT Utilità di pianificazione esegue lo script automaticamente). Se hai bisogno di aiuto per identificare un ID di processo, è possibile utilizzare un altro script WSH, ps.vbs, che è anche disponibile per il download dal sito Web di amministrazione di IIS.

Mettiamo tali capacità al lavoro. Si consideri la seguente esecuzione dello script WSH di exec.vbs e dei suoi parametri:

cscript exec.vbs /e _"C:\Program Files\ _
Internet Explorer _
\Iexplore.exe" /s _
"TargetServer"  /u _
"Administrator" /w _
"Password"

L'effetto di questo comando è quello di eseguire Microsoft Internet Explorer (IE) su un computer completamente diverso chiamato "TargetServer." Si noti che ho incluso il percorso assoluto di IE: l'esecuzione avviene nella cartella \ winnt cartella \ system32 sulla macchina remota, e perché IE risiede né in quella cartella e non si associa ad esso, un percorso assoluto di posizione di IE è necessario. Il \ winnt \ system32 contiene centinaia di programmi. Se si ha accesso a un account di amministrazione su un Win2K telecomando (o NT 4.0 con SP4 o versioni successive) del server sulla rete e si sa che il server non è attualmente in uso (direttamente o indirettamente), provare il seguente codice:

cscript exec.vbs /e sol.exe _
/s TargetServer  /u _
Administrator /w _
password