# Ruby & WMI (win32ole)

**URL:** <https://www.ruby-forum.com/t/ruby-wmi-win32ole/140683>\
**Category:** Ruby\
**Created:** [June 17, 2008, 2:32pm UTC](https://www.ruby-forum.com/t/ruby-wmi-win32ole/140683 "2008-06-17T14:32:21Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![rorschach](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/3d9bf3/32.png) [@rorschach](https://www.ruby-forum.com/u/rorschach)\
**Post date:** [June 17, 2008, 2:32pm UTC](https://www.ruby-forum.com/t/ruby-wmi-win32ole/140683/1 "2008-06-17T14:32:21Z")

</div>

Hi guys,

First off, hello 🙂 New to the community, looks very helpful and active  
indeed…

As i say, I am new to Ruby and am trying to port some WMI Powershell  
code over â€“ I am not having much luck… My goal is to automate Hyper-V  
on Windows 2008, as an example at a very simple level in powershell I  
can do:

## Define variable for getting VSMS class

$VSMS = get-wmiobject MSVM\_VirtualSystemManagementService -namespace  
“root\virtualization”

## Then call a method on that class like this. Definevirtualsystem is

the method in question, I call it with no parameters.  
$VSMS.definevirtualsystem()

I have tried two libarys in Ruby, win32ole and ruby-wmi. The synatx for  
ruby-wmi confused me the most, so can only post a (kind of) working  
example with win32ole:

require ‘win32ole’  
wmi =  
WIN32OLE.connect(“winmgmts:\\localhost\root\virtualization:Msvm\_VirtualSystemManagementService”)  
wmi.ExecMethod(DefineVirtualSystem())

… this gives me the following error:  
test.rb:4: undefined method `DefineVirtualSystem’ for main:Object  
(NoMethodError)

Also one of the tricks with WMI is to get the XML output of a class,  
change the settings and squirt it back.

Using the previous example, i could do:

$VSMS.psbase.gettext(1)

…to give myself the raw XML. Is there an easy way to do this in Ruby?

Any pointers would be greatly appreciated.

Cheers,

Nick

---

<div class="post-metadata">

**Author:** ![rorschach](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/3d9bf3/32.png) [@rorschach](https://www.ruby-forum.com/u/rorschach)\
**Post date:** [June 18, 2008, 12:50pm UTC](https://www.ruby-forum.com/t/ruby-wmi-win32ole/140683/2 "2008-06-18T12:50:40Z")

</div>

Hello,  
Nicholas C. wrote:

> I have tried two libarys in Ruby, win32ole and ruby-wmi. The synatx for  
> ruby-wmi confused me the most, so can only post a (kind of) working  
> example with win32ole:
> 
> require ‘win32ole’  
> wmi =  
> WIN32OLE.connect(“winmgmts:\\localhost\root\virtualization:Msvm\_VirtualSystemManagementService”)  
> wmi.ExecMethod(DefineVirtualSystem())

I have not used Powershell, so I’m not sure, but  
How about the following script?  
wmi.ExecMethod(‘DefineVirtualSystem’)

Regards,  
Masaki S.
