KB » Computer » Programmeren in Perl, C(++), VBScript, PowerShell en HTML

Programmeren in Perl, C(++), JavaScript, VBScript, PowerShell en HTML

    Tweeten

Introductie


Verschillen tussen programmeertalen

Data types

Er zijn loosely typed talen en strongly typed talen.

VBScript is een voorbeeld van de 1e soort. Je kan bv. zeggen:
strHello = "Hello", zonder van te voren gezegd te hebben wat voor type variabele strHello is.

C is een voorbeeld van de 2e soort. Hier zou je hetzelfde als volgt moeten doen:
string strHello;
strHello = "Hello";

Data types in de Windows SDK

uint32 = unsigned integer 32 bits
boolean = Boolean waarde (True of False)
string = tekenreeks
datetime = datum en tijd


Overzicht van symbolen (en een paar commando's)

Er kan op een kolom worden gesorteerd door op de titel te klikken (en in omgekeerde volgorde door nog een keer te klikken). Dat werkt overigens alleen als je JavaScript niet op 1 of andere manier geblokkeerd hebt, hetzij via Internet opties of via reclameblokkeer-programma's.

Symbool / commando VBScript JavaScript Perl C(++) Python Java Opmerkingen
Array index delimiters [ ] [ ]
String delimiter "
Line continuation _ \
End of statement Geen ; ; Geen
Assignment = = = =
Array delimiter ( )
Comment starts with ' # // # In C(++) ook begrensd door /* en */
In Python ook begrensd door *** en ***
Hexadecimaal getal &H1A = 26
Operator / bewerking VBScript JavaScript Perl C(++) Python Java Opmerkingen
Assignment = = =
Equal == ==
Not equal != !=
Less than <= <=
Greather than >= >=
AND && and
OR || or
NOT | not
Increment ++
String concatenation & .
String repetition x In Perl is 'aap' x 3 gelijk aan 'aapaapaap'
Modulus % % %
Power **

Gebruik maken van voorgedefinieerde informatie (zoals WMI)

Om van WMI gebruik te kunnen maken moet je de volgende regel in je script hebben staan:
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

Classes

De WMI bevat een heleboel classes.

Elke class kan een aantal methods (acties) en een aantal properties (eigenschappen) bevatten.

Onderstaand een voorbeeld van een class in de WMI met o.a. de properties Name en CreationDate:

class Win32_Process : CIM_Process { datetime CreationDate; string CSCreationClassName; string CSName; string Description; string ExecutablePath; uint16 ExecutionState; uint32 MaximumWorkingSetSize; uint32 MinimumWorkingSetSize; string Name; string OSCreationClassName; string OSName; };

Een ander voorbeeld (compleet):

class Win32_Service : Win32_BaseService { boolean AcceptPause; boolean AcceptStop; string Caption; uint32 CheckPoint; string CreationClassName; string Description; boolean DesktopInteract; string DisplayName; string ErrorControl; uint32 ExitCode; datetime InstallDate; string Name; string PathName; uint32 ProcessId; uint32 ServiceSpecificExitCode; string ServiceType; boolean Started; string StartMode; string StartName; string State; string Status; string SystemCreationClassName; string SystemName; uint32 TagId; uint32 WaitHint; };

De 1e regel betekent dat de class Win32_Service heet, en is afgeleid van de class Win32_BaseService

Dat betekent dat deze class een groot deel van de methods en properties van de class na de dubbele punt overneemt, maar evt. ook dingen kan herdefiniëren en nieuwe methods en properties kan toevoegen.

Tussen de accolades worden alleen de properties genoemd, en hun data type.

Bovengenoemde class wordt op deze pagina beschreven.

Na de basis class definitie zoals hierboven volgen lijsten met methods en properties van die class, met summiere definities. Als je op zo'n method of propery klikt krijg je volledige definitie.

Methods

Als je op de method ChangeStartMode klikt, krijg je o.a. de volgende secties.

Syntax

De syntax van deze method is als volgt:

uint32 ChangeStartMode( [in] string StartMode );

Omdat de 1e regel begint met een data type (uint32) betekent het dat je een resultaat terugkrijgt.

Je roept deze service dus bv. als volgt aan:
errReturn = objService.ChangeStartMode("Disabled")

Na afloop bevat errReturn de statuscode.

Omdat er iets tussen de ronde haakjes staat betekent het dat deze method parameters heeft.

In dit geval gaat het om een invoer-parameter, want er staat [in]


WMI Query Language

Het volgende script haalt alle eigenschappen (*) van het object Win32_PnPEntity op, en drukt er dan een paar af.

strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colItems = objWMIService.ExecQuery("Select * from Win32_PnPEntity") For Each objItem in colItems Wscript.Echo "Description: " & objItem.Description Wscript.Echo "Manufacturer: " & objItem.Manufacturer Wscript.Echo "Name: " & objItem.Name Wscript.Echo "Service: " & objItem.Service Wscript.Echo Next

I.p.v. * (alle eigenschappen) kan je ook 1 of een paar specifieke eigenschappen ophalen:
Select Description, Manufacturer from Win32_PnPEntity

Verder kan je aangeven dat een eigenschap aan bepaalde voorwaarden moet voldoen:
Select * from Win32_PnPEntity Where Manufacturer = 'Microsoft'

Dit commando haalt alle eigenschappen van alle Plug-and-Play objecten op, waarvan de fabrikant Microsoft is.

Je kan in de queries ook de keywords AND of OR gebruiken, bv.:
Select * from Win32_PnPEntity Where Manufacturer = 'Microsoft' or Manufacturer = 'Intel'

Wat er tussen enkele quotes staat is trouwens case-insensitive.

Tenslotte kan je in XP en hoger ook gebruik maken van wildcards in je queries:
Select * from Win32_PnPEntity Where Manufacturer = 'Microsoft' and Name Like 'wan miniport%'

Dit betekent dat de naam moet beginnen met "wan miniport", maar dat alles wat daarna komt niet belangrijk is.


WMI Reference
Windows Management Instrumentation Reference
WMI Classes
Management Infrastructure Classes. Hier kan je de definitie van alle WMI classes vinden, inclusief methods en properties.
Win32 Classes
Een subgroep van de voorgaande categorie.
WMI Error Constants
Een lijst met 0x8-error-codes die met WMI te maken hebben.


    Tweeten

© Henk Dalmolen
Reageer via E-mail (dalmolen@xs4all.nl)

Deze pagina is voor het laatst gewijzigd op: 25-08-18 20:15:02