Scripturi Wsh

WSH scripturi. Exemple.

Aici veți vedea diverse exemple de scripturi Windows Script Host (WSH).

Proprietatea de mediu

Returnează un obiect care vă permite să obțineți valorile variabilelor de mediu







var f1 = WScript.CreateObject ("WScript.Shell"); var f2 = f1.Environment ("Proces"); WScript.Echo (f2 ("windir")));

Proprietatea Proprietăți speciale.

Returnează calea către dosarele speciale.
Este posibil să obțineți calea către următoarele foldere:
AllUsersDesktop, AllUsersStartMenu, AllUsersPrograms, AllUsersStartup, desktop, Favorite, fonturi, MyDocuments, NetHood, PrintHood, Programe, recente, SendTo, StartMenu, pornire, Șabloane.
Exemplu de utilizare:

var f1 = WScript.CreateObject ("WScript.Shell"); var f3 = F1.SpecialFolders ("AllUsersDesktop"); WScript.Echo (f3);


Exemplu de script de copiere a fișierului WSH.


Următorul exemplu creează o comandă rapidă pentru adresa URL de pe desktop


Scriptul WSH poate instala o nouă imprimantă în Windows, iniția instalarea driverelor.

// JScript. var net; net = nou ActiveXObject ("WScript.Network"); net.AddWindowsPrinterConnection ("\\\\ ServerName \\ PrinterName");


În acest exemplu, scriptul WSH atribuie o literă de unitate unei unități de rețea

// JScript. var net; net = nou ActiveXObject ("WScript.Network"); net.MapNetworkDrive ("I:", "\\\\ computer2 \\ public", "Adevărat");


În următorul exemplu, vom examina o importantă sarcină practică: selectați ferestrele de dosare și trimiteți numele dosarului și calea către fișierul bat / cmd.

PENTRU / F "usebackq delims =" %% i IN ( `CScript // nologo foldsel.js`) setați sfold = %% i în cazul în care sfold definit (echo Selectați directorul:. [% Sfold%]) Else (echo nr selectați dosar)


Același exemplu poate fi scris și așa


Reduceți toate ferestrele Windows desktop

var f1 = WScript.CreateObject ("Shell.Application"); f1.MinimizeAll ();


Extindeți toate ferestrele Windows desktop


Porniți Windows Explorer cu un anumit dosar deschis.

var f1 = WScript.CreateObject ("Shell.Application"); f1.Explore ("d: \\ 00tt");


Determinați cantitatea de memorie RAM

var f1 = WScript.CreateObject ("Shell.Application"); WScript.Echo (f1.GetSystemInformation ("PhysicalMemoryInstalled")));


Apelați fereastra "Porniți programul"

var f1 = WScript.CreateObject ("Shell.Application"); f1.FileRun ();


Apelați fereastra de închidere și reporniți computerul

var f1 = WScript.CreateObject ("Shell.Application"); f1.ShutdownWindows ();


Apelați fereastra Conexiuni în rețea a panoului de control

var f1 = WScript.CreateObject ("Shell.Application"); f1.ControlPanelItem ("ncpa.cpl");


Apelarea ferestrei de proprietăți Internet

var f1 = WScript.CreateObject ("Shell.Application"); // proprietăți Internet f1.ControlPanelItem ("Inetcpl.cpl");


Apelați fereastra cu setări regionale

var f1 = WScript.CreateObject ("Shell.Application"); // Proprietăți locale ale setărilor f1.ControlPanelItem ("ntl.cpl");


Apelarea ferestrei de proprietăți a rețelei

var f1 = WScript.CreateObject ("Shell.Application"); // Proprietățile rețelei f1.ControlPanelItem ("Netcpl.cpl");


Apelați fereastra cu proprietățile parolei

var f1 = WScript.CreateObject ("Shell.Application"); // Proprietăți parole f1.ControlPanelItem ("Password.cpl");


Apelați proprietățile sistemului și adăugați expertul Hardware nou

var f1 = WScript.CreateObject ("Shell.Application"); // proprietățile sistemului și adăugați expertul hardware nou f1.ControlPanelItem ("Sysdm.cpl");


Apelarea ferestrei Teme desktop

var f1 = WScript.CreateObject ("Shell.Application"); // Temele desktop f1.ControlPanelItem ("Themes.cpl");


Apelarea ferestrei de proprietăți Date / Time

var f1 = WScript.CreateObject ("Shell.Application"); // Date / Time proprietăți f1.ControlPanelItem ("TimeDate.cpl");


Puteți apela direct pe applet utilizând Rundll32.exe. Apoi, de exemplu, apelarea ferestrei pentru setarea datei și a orei poate arăta astfel:

WshShell = WScript.CreateObject ("WScript.Shell"); WshShell.Run ("Rundll32.exe shell32.dll, Control_RunDLL timedate.cpl");


Pe pagina care descrie comanda Rundll32 puteți găsi un număr mare de exemple de utilizare. Prin urmare, schimbând ultima linie din exemplul de mai sus, puteți obține toate aceste caracteristici din WSH.
Următorul exemplu deschide o fereastră de browser cu pagina dorită.


Exemplu de script WSH pentru a apela fereastra Windows Explorer "căutarea unui computer"

var f1 = WScript.CreateObject ("Shell.Application"); f1.FindComputer ();


Fereastră modalitate de ieșire cu titlul ferestrei, textul întrebării și butoanele DA și NU. Termenul limită este de asemenea definit, după care fereastra va fi închisă forțat (codul de întoarcere -1).

var f1 = WScript.CreateObject ("WScript.Shell"); var f3 = f1.Popup ("Înțelegi despre ce vorbesc?", 80, "Security Question", 4 + 32); WScript.Echo (f3);


Selectarea unui fișier prin Explorer

var objDialog = noul ActiveXObject ('UserAccounts.CommonDialog'); objDialog.Filter = "Scripturi WSH (* .vbs, * .js) | * .vbs; *. js | Toate fișierele (*. *) | *. *"; objDialog.InitialDir = "c:"; var intResult = ObiectDealog.ShowOpen (); dacă (intResult == 0) WScript.quit (); altfel WScript.Echo (objDialog.FileName);


Determinați data instalării Windows








Publicați sunetul (semnal sonor) cu un difuzor.

var WshShell = WScript.CreateObject ("WScript.Shell"); WshShell.Run ("% comspec% / c echo" + String.fromCharCode (7), 0, adevărat);


sau la fel pe VBS

Setați WshShell = CreateObject ("WScript.Shell") WshShell.Run "% comspec% / c echo" Chr (7), 0, Adevărat


În următorul script WSH, scriptul prin procesorul de comandă (cmd) sună comanda dir și apoi procesează rezultatele operării. Însăși exemplul, probabil, nu atât de interesant (deși această problemă este de a selecta fișierele dintr-un dosar de pe masca de dată nu este atât de banal pentru script), dar procesarea posibilitate stdin, stdout stderr și deschide perspective suplimentare.

var sh = noul ActiveXObject ("WScript.Shell"); var ex = sh.Exec ('cmd / cdir / B / O: -D "C: \\ Windows \\ System32 \\ * .sys"'); var stdout = []; var stderr = []; în timp ce (adevărat) dacă (ex.StdErr.AtEndOfStream) dacă (ex.Status == 1) > WScript.Echo ('\ nEXIT COD: \ n' + ex.ExitCode); WScript.Echo ('\ nSTDERR: \ n' + stderr.join ('\ n')); WScript.Echo ('\ nSTDOUT: \ n' + stdout.join ('\ n')); WScript.Quit ();


Un alt exemplu de script WSH pentru lucrul cu StdIn și StdOut. De data asta pe VBS.

Set WshShell = CreateObject ( "WScript.Shell") Set WshExec = WshShell.Exec ( "nslookup") Set InStream = WshExec.StdIn InStream.WriteLine "ajutor" InStream.WriteLine "exit" Set OutStream = WshExec.StdOut Str = vbNullString În timp ce Nu OutStream.AtEndOfStream Str = Str Trim (OutStream.ReadLine ()) vbCrLf Wend MsgBox Str


Un alt exemplu de script WSH care rulează un program extern cu un parametru și procesează ieșirea din acest program:


Dacă utilizați o comandă diferită în exemplul anterior, poate fi dificilă localizarea rusească deoarece ieșirea comenzii este în codare DOS. În acest caz, dacă este necesar, linia trebuie re-codată în codificare WIN (1251). Folosim în acest scop funcția scrisă pe VBS.


Câteva exemple sunt cum să creați comenzi rapide de la Windows Script Host (WSH).

Var WshShell, MyShortcut; // Creați un obiect WshShell WshShell = WScript.CreateObject ("WScript.Shell"); // Definiți calea către calea desktopDesktop = WshShell.SpecialFolders ("Desktop"); // Crearea unei comenzi rapide pe myShortcut = WshShell.CreateShortcut (pathDesktop + "\\ notepad.lnk") pentru desktop; // Setați calea către fișierul myShortcut.TargetPath = WshShell.ExpandEnvironmentStrings ( "% windir% \\ notepad.exe"); // Alocați directorul de lucru la myShortcut.WorkingDirectory = "c: \\ temp"; // Specificați argumentele liniei de comandă myShortcut.Arguments = "d: \\ myscript \\ MakeShortcut.js"; // Selectați pictograma din fișierul notepad.exe myShortcut.IconLocation = "notepad.exe, 0"; // salvați comanda rapidă myShortcut.Save ();

Următorul exemplu demonstrează modul în care Windows Script Host (WSH) poate crea comenzi rapide pentru resursele de rețea.


Câteva exemple sunt modul în care puteți rula interogările Windows Management Instrumentation (WMI) din Windows Script Host (WSH) și procesați rezultatele.


Modificați puțin cererea) și obțineți o listă de procese pe computer

// Conectați computerul local la rădăcina WMI var = GetObject ( "winmgmts:. \\\\ \\ rădăcină \\ cimv2"); ( "") // executa o interogare pentru a prelua toate procesele de pe calculator var reswmi = root.ExecQuery ( "Select * de la Win32_Process"); // Tipăriți numele lor var s = ""; pentru (acc var = new Recenzorul (reswmi) ;! acc.atEnd (); acc.moveNext ()) s = s + acc.item () Name + "\ n" .; WScript.Echo (e);


În următorul exemplu WSH, folosind o interogare la WMI, devine o listă de unități logice. Da, WSH are propriile sale metode pentru acest lucru și mi se pare că sunt mai potrivite pentru un astfel de caz. Aici am luat în considerare o altă posibilitate.

// Conectați la WMI a calculatorului local (".") Var rădăcină = GetObject ("winmgmts: \\\\. \\ root \\ cimv2"); // Cereți discurile logice pe computer var reswmi = root.ExecQuery ("Selectați * din Win32_LogicalDisk"); // Tipăriți numele lor var s = ""; pentru (var acc = new Enumerator (reswmi) ;! acc.atEnd (); acc.moveNext ()) s = s + acc.item () DeviceID + "" + acc.item acc.item () Descriere + "" + acc.item () VolumeSerialNumber + "\ n"; WScript.Echo (e);


Un exemplu de obținere a informațiilor despre sistemul de operare. WSH + WMI.

// Conectați computerul local la rădăcina WMI var = GetObject ( "winmgmts:. \\\\ \\ rădăcină \\ cimv2"); ( "") // executa o interogare pentru a obține informații despre sistemul de operare var reswmi = root.ExecQuery ( "SELECT * FROM Win32_OperatingSystem"); var accitem; pentru (acc var = new Recenzorul (reswmi) ;! acc.atEnd (); acc.moveNext ()) accitem = acc.item (); var s = 'o scurtă descriere a versiunii sistemului de operare' + accitem.Caption + "\ r \ n" + 'de operare pentru sistem numărul build' + accitem.BuildNumber + "\ r \ n" + "a sistemului numărul de versiune de operare" + accitem.Version + "\ r \ n" + 'numele sistemului de operare' + accitem.Name + "\ r \ n" + 'tip de sistem de operare:' + accitem.OSType + "\ r \ n" + „versiune a pachetului de servicii + accitem.ServicePackMajorVersion + "\ r \ n" + 'limba sistemului de operare' + accitem.OSLanguage + "\ r \ n" + 'cod regiune care utilizează sistemul de operare' + accitem.CountryCode + "\ r \ n" + " identificator de limbă utilizat de către sistemul de operare '+ accitem.Locale + "\ r \ n" +' instalare data-timp '+ accitem.InstallDate + "\ r \ n" +' nume Comp porturi seriale + accitem.CSName + "\ r \ n" + 'organizație care a înregistrat sistemul de operare' + accitem.Organization + "\ r \ n" + 'numărul de serie' + accitem.SerialNumber + "\ r \ n" + 'utilizator inregistrat sistem de operare' + accitem.RegisteredUser + "\ r \ n" + „un fus orar; numărul de minute decalat față de Greenwich Mean Time '+ accitem.CurrentTimeZone + "\ r \ n" +' data + timpul ultimei de download „+ accitem.LastBootUpTime + "\ r \ n \ r \ n"; WScript.Echo (e);

WSH + WMI. Clasă Win32_ComputerSystem

// Conectați computerul local la rădăcina WMI var = GetObject ( "winmgmts:. \\\\ \\ rădăcină \\ cimv2"); ( "") var reswmi = root.ExecQuery ( "SELECT * FROM Win32_ComputerSystem"); var accitem; pentru (acc var = new Recenzorul (reswmi) ;! acc.atEnd (); acc.moveNext ()) accitem = acc.item (); Numele computerului 'var s = + accitem.Caption + "\ r \ n" + 'domeniu' + accitem.Domain + "\ r \ n" + "Rolul calculatorului în domeniu; dacă (accitem.DomainRole == 0) s + = 'Stație de lucru autonomă'; dacă (accitem.DomainRole == 1) s + = "Postul de lucru membru"; dacă (accitem.DomainRole == 2) s + = 'Server autonom'; dacă (accitem.DomainRole == 3) s + = 'Server membru'; dacă (accitem.DomainRole == 4) s + = "Controlor de domeniu de rezervă"; dacă (accitem.DomainRole == 5) s + = "Controlor de domeniu primar"; s + = '\ r \ n'; s + = 'toată memoria fizică (bytes)' + accitem.TotalPhysicalMemory + "\ r \ n"; WScript.Echo (e);


Următorul exemplu de utilizare a WMI în WSH este de a determina codec-urile instalate.

Pentru întrebări, discuții, comentarii, sugestii etc., puteți folosi secțiunea de forum a acestui site (este necesară înregistrarea).







Articole similare

Trimiteți-le prietenilor: