Programmeren in Perl, C(++), JavaScript, VBScript, PowerShell en HTML
- Introductie
- Verschillen tussen programmeertalen
- Overzicht van symbolen (en een paar commando's)
- Gebruik maken van voorgedefinieerde informatie (zoals WMI)
- WMI Query Language
- Links
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 | PHP | Opmerkingen |
---|---|---|---|---|---|---|---|
Array index delimiters | [ ] | [ ] | [ ] | ||||
String delimiter | " | " | |||||
Line continuation | _ | \ | |||||
End of statement | Geen | ; | ; | Geen | ; | ||
Assignment | = | = | = | = | = | ||
Array delimiter | ( ) | () | |||||
Comment starts with | ' | # | // | # | // | In C(++) en PHP ook begrensd door /* en */ In Python ook begrensd door *** en *** |
|
Hexadecimaal getal | &H1A = 26 |
Operator / bewerking | VBScript | JavaScript | Perl | C(++) | Python | PHP | 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.
Links
- 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.
Reageer via E-mail (dalmolen@xs4all.nl)
Deze pagina is voor het laatst gewijzigd op: 09-02-23 14:29:19