ActiveXperts Scripting Component
ActiveXperts Scripting Component

quicklinks

Introduzione Windows Scripting Host (WSH)

Una delle carenze piu' importanti di Windows, rispetto ad altri sistemi operativi, e' la mancanza di un linguaggio batch per automatizzare le attivita'. Anche se la base di MS-DOS supporta i file batch, essi sono di scarsa utilita' in ambiente Windows: non si puo' nemmeno avviare i programmi Windows da file batch.

Il personale di supporto che desidera automatizzare le attivita' per i loro utenti e' costretto ad utilizzare strumenti di terze parti come Wilson WinBatch o Take Command JP Software. Poiche' questi strumenti non sono parte di Windows, essi devono essere installati separatamente prima di poter essere utilizzati. Concessione in licenza di questi strumenti significa che i costi aggiuntivi sono spesso sostenuti, che, se il bilancio non e' disponibile, diventa un problema.

Questa limitazione di Windows e' stato rimossa con l'avvento di Windows Scripting Host (WSH). Disponibile dopo il rilascio di Internet Explorer 3.0, Microsoft inizialmente ha taciuto riguardo la struttura. Questo non e' piu' il caso, e il WSH e' uno degli accessori standard da Windows 98 in poi.
E' possibile utilizzare Windows Script Host (WSH) per eseguire gli script facendo clic su un file di script sul desktop di Windows o digitando il nome di un file script al prompt di comandi. Simile a Microsoft Internet Explorer, Windows Script Host serve come un controller di Windows Script conforme con i motori di script. A differenza di Internet Explorer, Windows Script Host ha requisiti di memoria molto piu' bassi ed e' ideale per gli script sia interattivi che non interattivi, quali script di accesso e gli script amministrativi.

Ci sono due versioni di Windows Script Host: una versione basata su Windows (Wscript.exe), che fornisce una finestra delle proprieta' per impostare le proprieta' di script, e un prompt dei comandi versione basata (Cscript.exe), che fornisce da riga di comando interruttori per l'impostazione delle proprieta' degli script. E' possibile eseguire uno di questi da parte Wscript.exe digitando o Cscript.exe al prompt di comandi.

In precedenza, l'unico linguaggio di scripting nativo supportato dal sistema operativo Windows e' stato il MS-DOS linguaggio di comando. Anche se MS-DOS e' veloce e piccola, le sue caratteristiche sono limitate rispetto a VBScript e JScript. Per esempio, la capacita' di controllare il flusso del programma non e' stata costruita nel linguaggio. Oggi, l'architettura di Windows Script Host consente di approfittare di questi linguaggi di scripting piu' potenti, anche se il supporto e' ancora previsto per MS-DOS script di comando.

Internet Explorer 3.0 ha introdotto la capacita' di scripting lato client, utilizzando il codice script incorporato nelle pagine HTML. Invece di fare questa una caratteristica specifica di Internet Explorer, Microsoft progettato l'impianto in modo tale che scripting potrebbe essere incorporato in altre applicazioni come bene. L'applicazione - in questo caso Internet Explorer - e' l'host di script, ed espone gli oggetti COM diversi che uno script in grado di manipolare.

Nel WSH, gli oggetti forniti consente agli script di controllare alcune funzioni del sistema operativo. Microsoft produce un altro host di scripting: Internet Information Server (IIS), che utilizza lo stesso linguaggio di script per lo scripting lato server. Altri sviluppatori possono scrivere applicazioni che sono di scripting host da quando Microsoft ha pubblicato le specifiche per farlo.

Microsoft ha anche documentato l'interfaccia per i motori di script. Questo permettera' agli sviluppatori di scrivere i motori per altri linguaggi di script. Una volta che i motori sono registrati con il sistema di questi linguaggi di script puo' essere utilizzato in tutti gli host di scripting. Microsoft ha prodotto due linguaggi di script, VBScript e JavaScript. Motori per altri linguaggi di script popolari come Perl e Rexx senza dubbio presto compariranno. In questo articolo ci concentreremo sull'uso di VBScript, ma tutti gli esempi qui riportati potrebbero essere attuate altrettanto bene utilizzando JavaScript.

Benvenuti nel Mondo di WSH

Microsoft include WSH con Windows 98 e Internet Explorer (IE) 3.0 e versioni successive. Microsoft include anche WSH con Windows 2000 (Win2Kformerly Windows NT 5.0). Anche se Microsoft fornisce il motore di script WSH, la societa' non fornisce un ambiente di sviluppo o di editor di sorgente. Tuttavia, e' possibile creare script WSH con qualsiasi editor di testo, ad esempio Blocco note di Microsoft.

WSH consente di eseguire o Visual Basic Script (VBScript) o file di origine JScript. Esecuzione degli script WSH ├Ę semplice. E' sufficiente fare doppio clic su un file con estensione. Vbs (per VBScript) o. Js (per JScript). WSH viene eseguito automaticamente wscript.exe, la versione per Windows del motore di script WSH, utilizzando il codice sorgente dal file selezionato. E' inoltre possibile eseguire la riga di comando versione di WSH eseguendo cscript.exe dalla riga di comando o includendo la linea cscript.exe in un file batch. La versione cscript.exe consente di utilizzare il parametro / B per disattivare i messaggi di errore ei messaggi.

Quando si esegue wscript.exe o cscript.exe, e' necessario includere il nome del file di origine che si desidera eseguire (ad esempio, myscript.vbs) come primo parametro. Per esempio, per wscript.exe, tipo:

wscript myscript.vbs

Per cscript.exe, tipo

cscript myscript.vbs

WSH esegue i file VBScript e JScript in modo interattivo, in modo che non supporta gli script di compilazione in modalita' stand-alone programmi eseguibili. Tuttavia, sia VBScript e JScript sono full-optional linguaggi di programmazione con funzionalita' che superano di gran lunga quella di file batch o macro registrate. Entrambi i linguaggi di scripting ├Ę possibile dichiarare le variabili, forniscono il flusso del programma utilizzando If ... Then ... Else e Do ... Le istruzioni di ciclo, e di eseguire la logica condizionale mediante select. Le lingue forniscono anche una serie di funzioni matematiche, da addizione e moltiplicazione di radice quadrata, seno, coseno, e l'elevamento a potenza. Il built-in oggetti script WSH fornire supporto per la modalita' grafica di accesso I / O, le chiamate di sistema dei file e del Registro di sistema.

Il modello di oggetto WSH

Prima di iniziare a scrivere gli script WSH, e' necessario avere familiarita' con il modello a oggetti WSH. I tre obiettivi principali sono WScript, WshShell e WshNetwork. Le descrizioni che seguono forniscono solo informazioni di base su questi oggetti.

WScript e' l'oggetto principale nel modello a oggetti WSH. Questo oggetto ha cinque metodi (CreateObject, DisconnectObject, Echo, GetObject e Esci) e otto proprietà (applicazioni, Argomenti, FullName, nome, percorso, ScriptFullName, NomeScript, e versione). Il metodo principale WScript e' CreateObject, che consente di creare oggetti COM diversi. Il metodo Echo e' anche importante, perche' si puo' utilizzare per inviare l'output a una finestra. Una delle proprieta' più utili e' argomenti, perche' consente di lavorare con parametri provenienti dalla riga di comando.

WshShell ha sette metodi (CreateShortcut, ExpandEnvironmentStrings, Popup, RegDelete, RegRead, RegWrite, e Run) e due proprieta' (Ambiente e SpecialFolders). Con il metodo Run WshShell, e' possibile avviare altre applicazioni Windows. RegDelete dell'oggetto, RegRead e i metodi RegWrite, permettono al vostro script di essere letto e scritto nel Registro di sistema.

I sette metodi di WshNetwork (AddPrinterConnection, EnumNetworkDrives, EnumPrinterConnections, MapNetworkDrive, RemoveNetworkDrive, RemovePrinterConnection e SetDefaultPrinter) forniscono il supporto per oggetti di rete diversi. Ad esempio, e' possibile enumerare le risorse di rete e collegare o scollegare le unita' di rete. Con le tre proprieta' di WshNetwork (ComputerName, UserDomain, e nome utente), e' possibile recuperare i nomi di computer, nomi di dominio degli utenti, nonche' i nomi degli utenti che hanno eseguito l'accesso.

Oltre a WScript, WshShell e WshNetwork, un'altra importante necessita' e' quella di avere familiarita' con il FileSystemObject, che fa parte del modello di oggetti script (sia VBScript e JScript seguono questo modello). FileSystemObject consente ai tuoi script WSH di lavorare con i file e le cartelle del sistema operativo. Questo oggetto ha una proprieta' (unità) e 24 metodi. Alcuni metodi di oggetti (ad esempio, CopyFile, CopyFolder, DeleteFile, DeleteFolder, GetFolder, MoveFile, MoveFolder) consentono di modificare file e cartelle, altri consentono di aggiungere un nome a un tracciato esistente (BuildPath) o aprire un file di testo esistente (OpenTextFile) in modo che lo script sia in grado di leggere e scrivere file di testo.

Creare un WSH

Ora che si ha avuto una visione d'insieme del quadro dell'oggetto WSH, vi faccio vedere come fare un semplice script WSH per visualizzare il nome del computer del sistema, nome di dominio e nome utente. 1 contiene le NetNames.vbs esempio di script, che utilizza VBScript per creare e manipolare l'oggetto WshNetwork.

Come in standard VB, iniziare lo script VBScript dalla dichiarazione delle variabili utilizzando un'istruzione Dim. Tuttavia, l'implementazione VBScript e' pi├╣ facile rispetto all'attuazione VB, in quanto non e' necessario dichiarare un tipo di dati. In questo caso, l'istruzione Dim dichiara la variabile, oWshNetwork. Il prefisso o specifica un oggetto (un'altra convenzione di denominazione che si potrebbe vedere per oggetto obj e' il prefisso).

Successivamente, utilizzare istruzione Set VBScript con il metodo CreateObject di WScript (WScript.CreateObject) per assegnare un'istanza dell'oggetto WshNetwork alla variabile oWshNetwork. Quando si assegna un esempio, si crea un riferimento tra l'oggetto esistente e la variabile che si sta creando. (Per conservare la memoria di sistema e le risorse, VBScript crea riferimenti agli oggetti piuttosto che copie di essi). Le indicazioni tra parentesi, dopo WScript.CreateObject consentono di specificare il nome della classe COM ("WScript.Network") e dell'oggetto WshNetwork. E' necessario racchiudere i nomi delle classi tali virgolette.

Ora usate il metodo Echo WScript di (WScript.Echo) per visualizzare una finestra pop-up, per primo il nome del computer voce: seguito dal nome del computer, il quale script lo recupera dalla struttura di ComputerName WshNetwork. Il ritorno a capo carattere di avanzamento riga (vbCrLf) dice allo script di fare un ritorno, e il carattere di sottolineatura (_) dice allo script che il comando continua sulla riga successiva. Nella riga successiva, la finestra visualizza il nome di dominio voce: seguito dal nome del tuo dominio, che lo script recupera dalla struttura di UserDomain WshNetwork. Ancora una volta, vbCrLf & _ dice allo script di fare un ritorno e di continuare. Nell'ultima riga, la finestra visualizza il nome di accesso voce: seguito dal vostro nome utente, che lo script recupera dalla proprieta' di UserName WshNetwork. E' necessario racchiudere i titoli tra virgolette, poiche' sono stringhe con spazi incorporati.

Terminare lo script impostando oWshNetwork su Nothing per rimuovere il riferimento tra questa variabile e l'oggetto esistente. La rimozione del riferimento consente al sistema di riallocare la memoria e le risorse.

Come si puo' vedere, lo sviluppo WSH e VBScript ambiente sono simili a quello di VB. Tuttavia, VBScript e' piu' facile da usare perche' WSH e' incorporato in oggetti che forniscono un facile accesso alle informazioni di sistema.

Debug Stops Here

Hai visto un semplice esempio di WSH in azione, quindi diamo un'occhiata a un esempio un po' piu' complesso. Le ListFiles.vbs script di esempio nel Listato 2 mostrano come e' possibile avviare il debugger di script WSH. L'esempio mostra anche come utilizzare un oggetto Collection per elencare tutti i file in una directory e li visualizza in una finestra pop-up. Un oggetto di raccolta e' un gruppo o una serie di oggetti correlati. Per esempio, la collezione di file oggetto, che verra' utilizzato in seguito, e' un gruppo di oggetti File in cui ogni oggetto File rappresenta un file del sistema operativo in una cartella.

Inizia ListFiles.vbs dichiarando le variabili dello script con le istruzioni Dim. Il prefisso s in sFileList Dim specifica che la variabile e' un tipo di dati stringa. (Un'altra convenzione di denominazione che si potrebbe vedere per la stringa ├Ę il prefisso str.) Avanti, utilizzare il metodo CreateObject WScript per creare un'istanza del Scripting.FileSystemObject e assegnare alla variabile oFileSystemObject using Set di VBScript.

Dopo aver creato oFileSystemObject, inserire l'istruzione Stop. Quando si esegue ListFiles.vbs, lo script si ferma e a questo punto e' possibile avviare il debugger di script WSH.

Successivamente, creare un nuovo oggetto Folders (oFolders) che rappresenta la cartella / temp: Utilizzare il metodo GetFolder il FileSystemObject per restituire un oggetto cartella che corrisponde alla cartella nel percorso "c: \ temp". Ogni cartella o directory puo' contenere piu' file, la raccolta di file in oFolders rappresenta i file che la cartella c: \ Temp contiene. Utilizzare VBScript For Each ... Next per scorrere l'insieme di oggetti di file nella collezione oFolder.Files. Aggiunge sFileList con il nome di ogni oggetto file seguito da vbCrLf in modo che ogni nome di file si trovi su una riga separata. Utilizzare il metodo Echo WScript per visualizzare sFileList in una finestra pop-up. Infine, stabilire oFileSystemObject, oFolder e oFile su Nothing.

Chiamare tutti i COMs

Con WSH, e' possibile controllare qualsiasi applicazione Windows che supporti Object Linking and Embedding (OLE) automazione. WSH ha la capacita' di eseguire e controllare le applicazioni Windows con gli oggetti COM alzando il livello di funzionalita' di gran lunga superiore a semplici file batch fare. La maggior parte delle applicazioni Windows, incluse le applicazioni di Microsoft Office, espongono le funzionalita' ricche attraverso i loro rispettivi modelli di oggetti COM. E' quindi possibile utilizzare un ambiente di sviluppo COM abilitato come WSH con VBScript per accedere a tale funzionalitA'. Ad esempio, il Listato 3 contiene uno script, NetDrives.vbs, che lancia Excel e utilizza il supporto COM WSH di scrivere tutti le unitA' di rete mappate a celle di un foglio di lavoro.

Vi consiglio di iniziare NetDrives.vbs (o qualsiasi altro script con piu' di poche righe di lunghezza) con istruzione Option Explicit di VBScript. Questa affermazione richiede la dichiarazione di tutte le variabili prima di utilizzarle. Come VB, VBScript non richiede che si dichiarano delle variabili. In un primo momento, questa funzione potrebbe sembrare conveniente, ma e' possibile introdurre errori di difficile individuazione negli script se non vengono dichiarate le variabili. Ad esempio, se si dichiara una variabile denominata nCount, che si intende utilizzare come un contatore di ciclo, ma inavvertitamente si utilizza nCount (nessuna capitalizzazione) nel codice, VBScript tratta nCount come una variabile distinta, che puo' causare risultati imprevedibili. Peggio ancora, questo tipo di errore e' spesso difficile da rintracciare. L'istruzione Option Explicit impedisce questo tipo di problema.

Dopo aver utilizzato l'istruzione Option Explicit, dichiarare le variabili di lavoro dello script e inizializzare il contatore nCount loop 1. Il n prefisso nCount specifica che la variabile e' di tipo numerico. Quindi, creare un'istanza dell'oggetto WshNetwork e assegnarlo alla variabile oWshNetwork. Quindi, utilizzare il metodo di EnumNetworkDrives WshNetwork (oWshNetwork.EnumNetworkDrives) per restituire un insieme che contiene i mapping delle unita' di rete. Assegnare questo insieme nella variabile oNetDrives.

Ora e' necessario modificare gli oggetti dal modello COM di Excel oggetto. In NetDrives.vbs, si utilizza Excel di livello superiore di oggetto Application e tre dei suoi figli: Workbooks oggetto, oggetto Range, e insieme Cells oggetto. Starete utilizzando la proprieta' Visible dell'oggetto Application, che controlla se gli utenti possono vedere un oggetto, ad esempio un foglio di lavoro o cartella di lavoro. Se si specifica True, gli utenti possono vedere l'oggetto, se si specifica false, non riescono a vedere. La collezione Workbooks oggetto e' un insieme di oggetti cartella di lavoro, ciascuno dei quali rappresenta una cartella di lavoro in Excel. L'oggetto Range rappresenta una cella, riga, o un gruppo di celle in un foglio di lavoro. L'insieme Cells oggetto e' un insieme di oggetti cella, ciascuna delle quali rappresenta una cella di un foglio.

Per accedere all'oggetto Application, utilizzare il metodo CreateObject WScript per creare un'istanza dell'oggetto Excel.Application, assegnandolo alla variabile oXL. Successivamente, impostare la proprieta' Visible oXL a True per visualizzare l'applicazione Excel per gli utenti. Utilizzare il metodo Add dell'insieme Workbooks dell'oggetto per aggiungere una nuova cartella di lavoro. Non e' necessario impostare il valore di ritorno della cartella di lavoro a una variabile oggetto, perche' non si sta lavorando con i metodi dell'oggetto o proprieta'. Tuttavia, se si desidera lavorare con i metodi o le proprieta', e' necessario impostare il valore di ritorno.

La cartella di lavoro appena aggiunto contiene un foglio di lavoro predefinito. Ogni membro dell'oggetto insieme Cells rappresenta una cella nel foglio di lavoro. Per esempio, cellule (1, 1) rappresenta la cella A1 e Cells (2, 1) rappresenta cella A2. Perche' nCount inizializzato a 1, oXL.Cells (nCount, 1) e' Cells (1, 1). E' possibile utilizzare la proprieta' Value dell'oggetto Range per assegnare Cells (1, 1) per "unità di rete mappate".

Dopo aver impostato il foglio di lavoro, utilizzare VBScript For Each ... Next per scorrere l'insieme oNetDrives. Gli incrementi nCount contatore ogni oggetto oNetDrive (vale a dire, ogni mapping di un'unità di rete) e dice allo script quale cella per posizionare l'unita' mappatura e trovare Il ciclo For Each ... Avanti termina quando lo script legge l'ultimo membro della collezione oNetDrives. Schermata 1 contiene un esempio di output dello script.

Potreste aver notato molta somiglianza tra il modo in cui e' stato creato l'oggetto Excel.Application e il modo in cui si e' creato gli oggetti Scripting.FileSystemObject e WScript.Network negli esempi precedenti. La ragione di questa somiglianza e' che COM e' il meccanismo di WSH utilizza per creare e utilizzare tutti questi oggetti.