Win32 Perl Wmi

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

1 comments

Comments 1 - 1 of 1 previous next Post a comment

  • + chorny chorny 2 years ago
    Please do not use prototypes in Perl programs, you have sub with 0 parameters and try to access first parameter,
Post a comment
Embed Video
Edit your comment Cancel

1 Group

Win32 Perl Wmi - Presentation Transcript

  1. Win32 Introduction to Perl & WMI
  2. WMI? • What Means It? • Who Made It? • What Makes It tick? • Where Might I use it for?
  3. Who Made It? • Set of Standards created by DMTF (Desktop Management Task Force Distributed Management Task Force)
  4. What Means It? • Set of Standards created by DMTF (Desktop Management Task Force Distributed Management Task Force) Consisting of: DMI (Desktop Management Interface) WBEM (Web-Based Entreprise Management) CIM (Common Interface Model) Bundled together known as Windows Meta Instrumentation.
  5. What Makes It tick? (1) Namespace(s) Provider Provider Class(es) Class(es) Class(es)
  6. What Makes It tick? (2) Namespace(s) Provider Provider Class(es) Class(es) Class(es) WMI Layer COM-API, SCRIPTING API OS Layer
  7. What Makes It tick? (3) Namespace(s) Provider Provider Class(es) Class(es) Class(es) WMI Layer COM-API, SCRIPTING API OS Layer WMI Classes, Objects & Properties COM-API, SCRIPTING-API, ... OS Specific Binaries, Registry, WBEM MIF & MOF Files, ... NT4 W2K W2K3 W2K8 XP Vista ...
  8. Where Might I use it for? A Quick & \"Uniform\" Development Interface Reporting Interface Device Management Interface
  9. Wow My…It even has a Wizard ;-) \"Scriptomatic\" • \"A completely new version of the famous Scriptomatic, the utility that writes WMI scripts for you. (And, in the process, teaches you the fundamental concepts behind writing WMI scripts for yourself.) • Unlike its predecessor, Scriptomatic 2.0 isn’t limited to writing just VBScript scripts; instead, Scriptomatic 2.0 can write scripts in Perl, Python, or JScript as well. • In addition, Scriptomatic 2.0 gives you a host of new output formats to use when running scripts, including saving data as plain-text, as a stand-alone Web page, or even as XML. Scriptomatic 2.0 handles arrays, it converts dates to a more readable format, and it works with all the WMI classes on your computer; on top of all that, it also writes scripts that can be run against multiple machines.“* *Quote Microsoft Download Center Download: http://www.microsoft.com/downloads/details.aspx?FamilyID=09dfc342-648b-4119- b7eb-783b0f7d1178&DisplayLang=en
  10. Example Perl WMI Query 1. use strict; 2. use Win32::OLE('in'); 3. use constant wbemFlagReturnImmediately => 0x10; 4. use constant wbemFlagForwardOnly => 0x20; 5. my @computers = (\".\"); 6. foreach my $computer (@computers) { 7. my $objWMI = Win32::OLE->GetObject(\"winmgmts:\\\\\\\\$computer\\\\root\\\\CIMV2\") or die \"WMI connection failed.\\n\"; 8. my $colItems = $objWMI->ExecQuery(\"SELECT * FROM Win32_NetworkAdapter\", \"WQL\", 9. wbemFlagReturnImmediately | wbemFlagForwardOnly); 10. foreach my $objItem (in $colItems) { 11. print (\"TimeOfLastReset: \" 12. .UTCDate($objItem->{TimeOfLastReset}).\"\\n\"); 13. print \"TimeOfLastReset: $objItem->{TimeOfLastReset}\\n\"; 14. print \"\\n\"; 15. } 16. } 17. sub UTCDate(){ 18. my $WmiDate = qr/(\\d{4})(\\d{2})(\\d{2})(\\d{2})(\\d{2}) 19. (\\d{2})\\.(\\d{6})([\\+\\-])(.*)$ 20. /ox; 21. $_[0] =~ s/$WmiDate/$1 $2 $3 $4h $5m $6s (UTC$8$9m)/; 22. return $_[0]; 23. } 24. #TimeOfLastReset: 20071027003940.826905+120 25. #TimeOfLastReset: 2007 10 27 00h 39m 40s (UTC+120m)
  11. Connecting Perl to WMI (1) • Moniker 1. use Win32::OLE('in'); 2. use strict; 3. $strComputer = '.'; 4. $objWMI = Win32::OLE->GetObject('winmgmts:\\\\\\\\' . $strComputer . '\\\\root\\\\cimv2'); Constructing a Moniker String: http://msdn2.microsoft.com/en-us/library/aa389292.aspx
  12. Connecting Perl to WMI (2) • SWBEM Locator 1. use Win32::OLE('in'); 2. use strict; 3. my $objWMILocator = Win32::OLE->CreateObject(\"WbemScripting.SWbemLocator\"); 4. $objWMILocator->Security_->{AuthenticationLevel} = 6; 5. my $objWMIComputer = $objWMILocator->ConnectServer($strComputer, \"root\\\\cimv2\", $strLocalUser, $strLocalPasswd); Connecting to WMI on a Remote Computer: http://msdn2.microsoft.com/en-us/library/aa389290.aspx
  13. WQL (SQL for WMI) AND NOT ASSOCIATORS OF NULL FALSE OR FROM REFERENCES OF GROUP Clause SELECT HAVING TRUE IS WHERE ISA WITHIN KEYSONLY __CLASS LIKE WQL (SQL for WMI): http://msdn2.microsoft.com/en-us/library/aa394606.aspx
  14. WQL - ExecQuery 1. my $objWMI = Win32::OLE->GetObject(\"winmgmts:\\\\\\\\$computer\\\\root\\\\CIMV2\") or die \"WMI connection failed.\\n\"; 2. my $colItems = $objWMI->ExecQuery(\"SELECT * FROM Win32_NetworkAdapter“, \"WQL\", wbemFlagReturnImmediately | wbemFlagForwardOnly); 3. foreach my $objItem (in $colItems) { 4. print ( \"TimeOfLastReset: \" 5. . UTCDate($objItem->{TimeOfLastReset}).\"\\n\"); 6. print \"TimeOfLastReset: $objItem->{TimeOfLastReset} \\n\\n\"; 7. } Calling a Method: http://msdn2.microsoft.com/en-us/library/aa384832.aspx WbemFlagEnum: http://msdn2.microsoft.com/en-us/library/Aa393980.aspx
  15. Example Perl WQL ‘Associators Of’ 1. use win32::ole; 2. use strict; 3. my $objWMI = Win32::OLE->GetObject('winmgmts:\\\\\\\\.\\\\root\\\\cimv2') or die \"WMI connection failed.\\n\"; 4. my $colNAs = $objWMI->ExecQuery( 'select * ' . ' from Win32_NetworkAdapter' ); 5. foreach my $objNA( in $colNAs) { 6. my $colSubNAConfig = 7. $objWMI->ExecQuery( 'ASSOCIATORS OF {Win32_NetworkAdapter.DeviceID=\\'' 8. . $objNA->DeviceID . '\\'} ' 9. . ' WHERE resultClass = ' 10. . ' win32_NetworkAdapterConfiguration' ); 11. foreach my $objNAConfig ( in $colSubNAConfig ) { 12. if ( $objNAConfig->DHCPEnabled == 1 ) { 13. my $intReturnCode = $objNAConfig->RenewDHCPLease(); 14. if ( $intReturnCode == 0 ) { 15. print \"Renewed IP Configuration for \".$objNA->Name ; 16. } 17. elsif ( $intReturnCode == 1 ) { 18. print \"You must reboot to renew the IP Configuration for \" 19. .$objNA->Name ; 20. } 21. } 22. } 23. }
  16. WMI UTC Date/Time (1) Based on the CIM datetime/interval format Formatting: yyyymmddHHMMSS.mmmmmmsUUU or yyyy-mm-dd HH:MM:SS:mmm 1. foreach my $objItem (in $colItems) { 2. print (\"TimeOfLastReset: \" .UTCDate($objItem->{TimeOfLastReset}) 3. 4. .\"\\n\"); 5. print \"TimeOfLastReset: $objItem->{TimeOfLastReset}\\n\"; 6. print \"\\n\"; 7. } 8. } 9. #TimeOfLastReset: 20071027003940.826905+120 10. #TimeOfLastReset: 2007 10 27 00h 39m 40s (UTC+120m)
  17. WMI UTC Date/Time (2) Based on the CIM datetime/interval format Formatting: yyyymmddHHMMSS.mmmmmmsUUU or yyyy-mm-dd HH:MM:SS:mmm 1. sub UTCDate(){ 2. my $WMIDate = $_[0]; 3. $WMIDate =~ s/[^0-9\\-\\+]//gis; 4. my $WmiDateRaw = qr/(\\d{4})(\\d{2})(\\d{2}) 5. (\\d{2})(\\d{2})(\\d{2}) 6. (\\d{6})([\\+\\-])(.*)$ 7. /ox; 8. my $WmiDateFormatted = qr/(\\d{4})\\-?(\\d{2})\\-?(\\d{2}) 9. (\\d{2})(\\d{2})(\\d{2}) 10. (\\d{3})$ 11. /ox; 12. if ($WMIDate =~ s/$WmiDateRaw/$1 $2 $3 $4h $5m $6s (UTC$8$9m)/){ 13. return $WMIDate; 14. }; 15. if ($WMIDate =~ s/$WmiDateFormatted/$1 $2 $3 $4h $5m $6s/){ 16. return $WMIDate; 17. }; 18. } 19. #TimeOfLastReset: 20071027003940.826905+120 20. #TimeOfLastReset: 2007 10 27 00h 39m 40s (UTC+120m)
  18. WMI Practical: ‘Route Print’ 1. use strict; 2. use Win32::OLE('in'); 3. use constant wbemFlagReturnImmediately => 0x10; 4. use constant wbemFlagForwardOnly => 0x20; 5. my $objWMIService = Win32::OLE->GetObject(\"winmgmts:\\\\\\\\localhost\\\\root\\\\CIMV2\") 6. or die \"WMI connection failed.\\n\"; 7. my $colItems = $objWMIService->ExecQuery(\"SELECT * FROM Win32_IP4RouteTable\", \"WQL\", wbemFlagReturnImmediately | wbemFlagForwardOnly); 8. if (Win32::GetLastError()){ 9. # Do Error Handling. 10. }; 11. print \"Destination\\t\".\"InterfaceIndex\\t\".\"Mask:\\t\".\"Metric1:\\t\". \"Name:\\t\".\"NextHop:\\t\".\"Type:\\t\".\"Protocol:\\n\"; 12. print ‘-’ x 78; 13. foreach my $objItem ( in $colItems) { 14. print \"$objItem->{Destination}\\t\"; 15. print sprintf \"0x%x\", $objItem->{InterfaceIndex}.\"\\t\"; 16. print \"$objItem->{Mask}\\t“.\"$objItem->{Metric1}\\t\"; 17. print \"$objItem->{Name}\\t“.\"$objItem->{NextHop}\\t\"; 18. print \"$objItem->{Type}\\t“.print \"$objItem->{Protocol}\\n\"; 19. }
  19. WMI Practical: ‘Route Add’ 1. use Win32::OLE; 2. use strict; 3. my $strComputer = '.'; 4. my $objLocator = Win32::OLE->new('WbemScripting.SWbemLocator'); 5. my $objWMI = $objLocator->ConnectServer($strComputer, 'root/CIMv2'); 6. my $objRoute = $objWMI->Get('Win32_IP4RouteTable')->SpawnInstance_(); 7. $objRoute->{Destination} = '0.0.0.0'; 8. $objRoute->{NextHop} = '10.10.0.1'; 9. $objRoute->{Mask} = '0.0.0.0'; 10. $objRoute->{InterfaceIndex} = 0x10006; 11. $objRoute->{Metric1} = 1; 12. $objRoute->{Protocol} = 1; 13. $objRoute->{Type} = 4; 14. $objRoute->Put_(); 15. if (Win32::GetLastError()){ 16. print \"WMI Error: \".Win32::GetLastError().\"\\n\"; 17. $intReturnCode &= 0; 18. }; 19. #route add 0.0.0.0 MASK 0.0.0.0 10.10.0.1
  20. WMI Practical: ‘Route Delete’ 1. my $objWMI = Win32::OLE->GetObject('winmgmts:\\\\\\\\.\\\\root\\\\cimv2'); 2. for ( my $j = 0; $j < $i; $j++ ) { 3. # open and delete local wmi instance 4. $objWMI->Delete( 'Win32_IP4RouteTable.Destination=\\'‘ . $Destination . '\\',NextHop=\\'‘ . $NextHop[$j] . '\\'' ); 5. if ( Win32::GetLastError() ) { 6. print \"Could not delete the route gateway. \" 7. . $NextHop[$j] 8. . \". WMI Error: \" 9. . Win32::GetLastError() . \"\\n\"; 10. $intReturnCode &= 0; 11. } 12. else { 13. print \"Route gateway \" . $NextHop[$j] . \" deleted\" ; 14. $intReturnCode &= 1; 15. } 16. }
  21. WMI Practical: ‘Refreshing \"PerfMon Data\"’ VBS PLS PL Accessing Performance Data : http://msdn2.microsoft.com/en-us/library/Aa384728.aspx
  22. WMI Practical: ‘Refreshing’ • VBS (`cscript script.vbs`) 1. ' Get the performance counter instance for the System process 2. set Perf = GetObject(\"winmgmts:Win32_PerfFormattedData_PerfOS_Processor.name=‘0'\") 3. ' Display some properties in a loop 4. for I = 1 to 5 5. Wscript.Echo \"Perf PercentIdleTime = \" & Perf.PercentIdleTime 6. Wscript.Sleep 2000 7. ' Refresh the objects 8. Perf.Refresh_ 9. next C:\\>cscript Demo_Refresher.vbs Microsoft (R) Windows Script Host Version 5.6 Copyright (C) Microsoft Corporation 1996-2001. All rights reserved. Perf PercentIdleTime = 100 Perf PercentIdleTime = Perf PercentIdleTime = 100 Perf PercentIdleTime = 96 Perf PercentIdleTime = 96 C:\\>
  23. WMI Practical: ‘Refreshing’ • PLS (`cscript script.pls`) 1. use Win32::OLE qw(in); 2. use strict; 3. 4. my $Perf = Win32::OLE->GetObject( \"winmgmts:Win32_PerfFormattedData_PerfOS_Processor.name=‘0'\"); 5. for (my $i = 1;$i <= 5 ;$i++){ 6. sleep 5; 7. $Perf->Refresh_(); 8. print \"PercentIdleTime: $Perf->{PercentIdleTime}\\n\"; 9. } C:\\>cscript Demo_Refresher.pls Microsoft (R) Windows Script Host Version 5.6 Copyright (C) Microsoft Corporation 1996-2001. All rights reserved. Perf PercentIdleTime = 100 Perf PercentIdleTime = Perf PercentIdleTime = 96 Perf PercentIdleTime = 93 Perf PercentIdleTime = 97 C:\\>
  24. WMI Practical: ‘Refreshing’ • PL (`perl script.pl`) 1. use Win32::OLE qw(in); 2. use strict; 3. for (my $i = 1;$i <= 5 ;$i++){ 4. my $Perf = Win32::OLE->GetObject( \"winmgmts:Win32_PerfFormattedData_PerfOS_Processor.name='0'\"); 5. print \"PercentIdleTime: $Perf->{PercentIdleTime}\\n\"; 6. $Perf->DESTROY; 7. $Perf = \"Unknown\"; 8. $Perf = undef; 9. sleep 2; 10. }; C:\\>perl Demo_Refresher.pl PercentIdleTime: 96 PercentIdleTime: 93 PercentIdleTime: 100 PercentIdleTime: 96 PercentIdleTime: 96 C:\\>
  25. WMI Practical: ‘Data Dumping’ • WQL Query • Enumerate WMI object • Generate XML Dumps
  26. WMI Practical: ‘WQL Query’ • Cf. Slide ‘WQL – ExecQuery’
  27. WMI Practical: ‘Enumerate WMI object’ 1. my $strWMIClass = \"win32_bios\"; 2. my $objWMI = Win32::OLE->GetObject(\"WinMgmts:\")->InstancesOf(\"win32_bios\"); 3. print( ( '-' x 78 ) . \"\\n \" 4. . \"Obtaining that object's data in an enumerated way.\\n\" 5. . ( '-' x 78 ) . \"\\n\" ); 6. my $pad_len = 30; 7. foreach my $objItem ( in $objWMI) { 8. print( sprintf( \"%-*s\", $pad_len, \"WMI Class\" ) . \": \" 9. . $strWMIClass . \"\\n\" 10. . sprintf( \"%-*s\", $pad_len, \"Name \" ) . \": \" 11. . sprintf( \"%-*s\", $pad_len, $objItem->Name ) . \"\\n\" ); 12. foreach my $objProp ( in $objItem->Properties_ ) { 13. if ( !( $objProp->Value ) ) { 14. print( sprintf( \"%-*s\", $pad_len, $objProp->Name ) . \": NULL\\n\" ); 15. } 16. elsif ( $objProp->IsArray == 1 ) { 17. foreach my $i ($objProp) { 18. print( sprintf( \"%-*s\", $pad_len, $objProp->Name ) . \": \" 19. . $objProp->Value($i) . \"\\n\" ); 20. } 21. } 22. elsif ( $objProp->IsArray != 1 ) { 23. print( sprintf( \"%-*s\", $pad_len, $objProp->Name ) . \": \" 24. . $objProp->Value . \"\\n\" ); 25. } 26. } 27. print \"\\n\"; 28. } 29. $objWMI->DESTROY; 30. $objWMI = \"Unknown\"; 31. $objWMI = undef;
  28. WMI Practical: ‘Enumerate WMI object’ WMI Class : win32_bios Name : Phoenix ROM BIOS PLUS Version 1.10 A07 BiosCharacteristics : BIOSVersion : BuildNumber : NULL Caption : Phoenix ROM BIOS PLUS Version 1.10 A07 CodeSet : NULL CurrentLanguage : en|US|iso8859-1 Description : Phoenix ROM BIOS PLUS Version 1.10 A07 IdentificationCode : NULL InstallableLanguages : 1 InstallDate : NULL LanguageEdition : NULL ListOfLanguages : Manufacturer : Dell Inc. Name : Phoenix ROM BIOS PLUS Version 1.10 A07 OtherTargetOS : NULL PrimaryBIOS : 1 ReleaseDate : 20070402000000.000000+000 SerialNumber : MySerialNbr SMBIOSBIOSVersion : A07 SMBIOSMajorVersion : 2 SMBIOSMinorVersion : 4 SMBIOSPresent : 1 SoftwareElementID : Phoenix ROM BIOS PLUS Version 1.10 A07 SoftwareElementState : 3 Status : OK TargetOperatingSystem : NULL Version : DELL - 27d70402
  29. WMI Practical: ‘Generate XML Dumps’ 1. use Win32::OLE qw(in); 2. use strict; 3. print( \"\\n\" 4. . ( '=' x 78 ) . \"\\n\" 5. . \"The following script shows how to obtain an XML representation of\\n\" 6. . \"the Win32_Bios class definition.\\n\" 7. . ( '=' x 78 ) . \"\\n\" ); 8. my $objWMI = Win32::OLE->GetObject(\"winmgmts:win32_bios\"); 9. my $XMLDtd = 1; 10. my $Text = $objWMI->GetText_($XMLDtd); 11. print( join( \"\\n<PROPERTY\", split( /<PROPERTY/, $Text ) ) . \"\\n\" ); 12. $objWMI->DESTROY; 13. $objWMI = \"Unknown\"; 14. $objWMI = undef; 15. #----------------------------------------------------------------------------- 16. print( ( '=' x 78 ) . \"\\n\" 17. . \"By specifying a particular instance of Win32_Bios, you can\\n\" 18. . \"obtain that object's data.\\n\" 19. . ( '=' x 78 ) . \"\\n\" ); 20. my $strWMIClass = \"win32_bios\"; 21. my $objWMI = Win32::OLE->GetObject(\"WinMgmts:\")->InstancesOf(\"win32_bios\"); 22. print( ( '-' x 78 ) . \"\\n\" 23. . \"Obtaining that object's data in XML.\\n\" 24. . ( '-' x 78 ) 25. . \"\\n\" ); 26. foreach my $objItem ( in $objWMI) { 27. my $XMLDtd = 1; 28. my $Text = $objItem->GetText_($XMLDtd); 29. print( join( \"\\n<PROPERTY\", split( /<PROPERTY/, $Text ) ) . \"\\n\" ); 30. }
  30. WMI Practical: ‘Generate XML Dumps’ <CLASS NAME=\"Win32_BIOS\" SUPERCLASS=\"CIM_BIOSElement\"> <PROPERTY NAME=\"__PATH\" CLASSORIGIN=\"___SYSTEM\" TYPE=\"string\"><VALUE>\\\\MyMachineName\\ROOT\\cimv2:Win32_BIOS</VALUE></PROPERTY> <PROPERTY NAME=\"__NAMESPACE\" CLASSORIGIN=\"___SYSTEM\" TYPE=\"string\"><VALUE>ROOT\\cimv2</VALUE></PROPERTY> <PROPERTY NAME=\"__SERVER\" CLASSORIGIN=\"___SYSTEM\" TYPE=\"string\"><VALUE>MyMachineName</VALUE></PROPERTY> <PROPERTY.ARRAY NAME=\"__DERIVATION\" CLASSORIGIN=\"___SYSTEM\" TYPE=\"string\"><VALUE.ARRAY><VALUE>CIM_BIOSElement</VALUE><VALUE>CIM_SoftwareElement</VA LUE><VALUE>CIM_LogicalElement</VALUE><VALUE>CIM_ManagedSystemElement</VALUE></VALUE.ARR AY></PROPERTY.ARRAY> <PROPERTY NAME=\"__PROPERTY_COUNT\" CLASSORIGIN=\"___SYSTEM\" TYPE=\"sint32\"><VALUE>27</VALUE></PROPERTY> <PROPERTY NAME=\"__RELPATH\" CLASSORIGIN=\"___SYSTEM\" TYPE=\"string\"><VALUE>Win32_BIOS</VALUE></PROPERTY> <PROPERTY NAME=\"__DYNASTY\" CLASSORIGIN=\"___SYSTEM\" TYPE=\"string\"><VALUE>CIM_ManagedSystemElement</VALUE></PROPERTY> <PROPERTY NAME=\"__SUPERCLASS\" CLASSORIGIN=\"___SYSTEM\" TYPE=\"string\"><VALUE>CIM_BIOSElement</VALUE></PROPERTY> <PROPERTY NAME=\"__CLASS\" CLASSORIGIN=\"___SYSTEM\" TYPE=\"string\"><VALUE>Win32_BIOS</VALUE></PROPERTY> <PROPERTY NAME=\"__GENUS\" CLASSORIGIN=\"___SYSTEM\" TYPE=\"sint32\"><VALUE>1</VALUE></PROPERTY> <PROPERTY.ARRAY NAME=\"BiosCharacteristics\" CLASSORIGIN=\"Win32_BIOS\" TYPE=\"uint16\"></PROPERTY.ARRAY> <PROPERTY.ARRAY NAME=\"BIOSVersion\" CLASSORIGIN=\"Win32_BIOS\" TYPE=\"string\"></PROPERTY.ARRAY> <PROPERTY NAME=\"BuildNumber\" CLASSORIGIN=\"CIM_SoftwareElement\" PROPAGATED=\"true\" TYPE=\"string\"></PROPERTY> <PROPERTY NAME=\"Caption\" CLASSORIGIN=\"CIM_ManagedSystemElement\" PROPAGATED=\"true\" TYPE=\"string\"></PROPERTY> .. TYPE=\"string\"></PROPERTY></CLASS>
  31. WMI Practical: ‘Generate XML Dumps’ <INSTANCE CLASSNAME=\"Win32_BIOS\"> <PROPERTY NAME=\"__PATH\" CLASSORIGIN=\"___SYSTEM\" TYPE=\"string\"><VALUE>\\\\MyMachineName\\root\\cimv2:Win32_BIOS.Name=\"Phoenix ROM BIOS PLUS Version 1.10 A07\",SoftwareElementID=\"Phoenix ROM BIOS PLUS Version 1.10 A07\",SoftwareElementState=3,TargetOperatingSystem=0,Version=\"DELL - 27d70402\"</VALUE></PROPERTY> <PROPERTY NAME=\"__NAMESPACE\" CLASSORIGIN=\"___SYSTEM\" TYPE=\"string\"><VALUE>root\\cimv2</VALUE></PROPERTY> <PROPERTY NAME=\"__SERVER\" CLASSORIGIN=\"___SYSTEM\" TYPE=\"string\"><VALUE>MyMachineName</VALUE></PROPERTY> <PROPERTY.ARRAY NAME=\"__DERIVATION\" CLASSORIGIN=\"___SYSTEM\" TYPE=\"string\"><VALUE.ARRAY><VALUE>CIM_BIOSElement</VALUE><VALUE>CIM_SoftwareElement</VA LUE><VALUE>CIM_LogicalElement</VALUE><VALUE>CIM_ManagedSystemElement</VALUE></VALUE.ARR AY></PROPERTY.ARRAY> <PROPERTY NAME=\"__PROPERTY_COUNT\" CLASSORIGIN=\"___SYSTEM\" TYPE=\"sint32\"><VALUE>27</VALUE></PROPERTY> <PROPERTY NAME=\"__RELPATH\" CLASSORIGIN=\"___SYSTEM\" TYPE=\"string\"><VALUE>Win32_BIOS.Name=\"Phoenix ROM BIOS PLUS Version 1.10 A07\",SoftwareElementID=\"Phoenix ROM BIOS PLUS Version 1.10 A07\",SoftwareElementState=3,TargetOperatingSystem=0,Version=\"DELL - 27d70402\"</VALUE></PROPERTY> <PROPERTY NAME=\"__DYNASTY\" CLASSORIGIN=\"___SYSTEM\" TYPE=\"string\"><VALUE>CIM_ManagedSystemElement</VALUE></PROPERTY> .. <PROPERTY NAME=\"Version\" CLASSORIGIN=\"CIM_SoftwareElement\" TYPE=\"string\"><VALUE>DELL - 27d70402</VALUE></PROPERTY></INSTANCE>
  32. If ( !($WMI) ) • Dos Executables • Perl XS interface to Win32 binaries
  33. ddn123456@gmail.com

+ ddn123456ddn123456, 2 years ago

custom

2058 views, 0 favs, 2 embeds more stats

An overview of accessing WMI through Perl.

More info about this document

CC Attribution-NoDerivs LicenseCC Attribution-NoDerivs License

Go to text version

  • Total Views 2058
    • 2053 on SlideShare
    • 5 from embeds
  • Comments 1
  • Favorites 0
  • Downloads 0
Most viewed embeds
  • 4 views on http://static.slidesharecdn.com
  • 1 views on http://www.fachak.com

more

All embeds
  • 4 views on http://static.slidesharecdn.com
  • 1 views on http://www.fachak.com

less

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

Cancel
File a copyright complaint
Having problems? Go to our helpdesk?

Categories

Groups / Events