GithubHelp home page GithubHelp logo

isabella232 / wmi-lite Goto Github PK

View Code? Open in Web Editor NEW

This project forked from chef/wmi-lite

0.0 0.0 0.0 75 KB

Lightweight, low-dependency wrapper for basic WMI functionality on Windows.

License: Apache License 2.0

Ruby 94.11% Shell 5.89%

wmi-lite's Introduction

Wmi-Lite

Build status Gem Version

wmi-lite is a lightweight Ruby gem utility library for accessing basic Windows Management Instrumentation (WMI) functionality on Windows. It has no dependencies outside of the Ruby interpreter and libraries and of course the Windows operating system.

Installation

To install it, run:

gem install wmi-lite

Usage

To use wmi-lite in your Ruby source code, just require it:

require 'wmi-lite'

You can then instantiate an object through WmiLite::Wmi.new that will allow you to query a WMI namespace by calling methods on that object.

  • The default namespace if no argument is specified to new is root\cimv2. To override, pass the desired WMI namespace string as an argument to the constructor.
  • To execute queries against the object's namespace, use the instances_of, first_of, and query methods.
  • The instances_of method will return all instances of a given class in the namespace as an array of instances.
  • The query method returns the results of an arbitrary WMI Query Language (WQL) query as an array of instances.
  • The first_of method will return the first of all instances of a given class in the namespace.
  • Each instance is represented by a Ruby Hash for which each property value of the instance is indexed by the string name of the property as documented in the WMI Schema or as registered in the local system's WMI repository.
  • The string name specified to the aforementioned Hash is case insensitive.

Examples

Use of the instances_of, query, and first_of methods of the WmiLite::Wmi object is demonstrated below.

Count cores in the system
cores = 0
wmi = WmiLite::Wmi.new
processors = wmi.instances_of('Win32_Processor')
processors.each do | processor |
  cores += processor['numberofcores']
end
puts "\nThis system has #{cores} core(s).\n"
Determine if the system is domain-joined
wmi = WmiLite::Wmi.new
computer_system = wmi.first_of('Win32_ComputerSystem')
is_in_domain = computer_system['partofdomain']
puts "\nThis system is #{is_in_domain ? '' : 'not '}domain joined.\n"
List Group Policy Objects (GPOs) applied to the system
wmi = WmiLite::Wmi.new('root\rsop\computer')
gpos = wmi.instances_of('RSOP_GPO')
puts "\n#{'GPO Id'.ljust(40)}\tName"
puts "#{'------'.ljust(40)}\t----\n"
gpos.each do | gpo |
  gpo_id = gpo['guidname']
  gpo_display_name = gpo['name']
  puts "#{gpo_id.ljust(40)}\t#{gpo_display_name}"
end
puts 'No GPOs' if gpos.count == 0
puts
List ruby-related processes
puts "Ruby processes:\n"
wmi = WmiLite::Wmi.new
processes = wmi.query('select * from Win32_Process where Name LIKE \'%ruby%\'')
puts "\n#{'Process Id'.ljust(10)} Name"
puts "#{'----------'.ljust(10)} ----\n"
processes.each do | process |
  pid = process['processid']
  name = process['name']
  puts "#{pid.to_s.ljust(10)} #{name}"
end
puts

Development Documentation

All documentation is written using YARD. You can generate a by running:

rake docs

Contributing

For information on contributing to this project please see our Contributing Documentation

License & Copyright

  • Copyright:: Copyright (c) 2014-2018 Chef Software, Inc.
  • License:: Apache License, Version 2.0
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

wmi-lite's People

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.