I have been playing with ruby for a few weeks now to do windows
administration. I haved used ruby with WMI on harder scripts but cant
figure out what to do here. I want to query remote computers and see
who is in the administratiors group.
require ‘win32ole’
cpuName = ‘127.0.0.1’
mgmt = WIN32OLE.connect(“WinNT://#{cpuName}/Administrators,group”)
mgmt.InstancesOf(“Members”).each{|person| puts person.Name} <---- This
fails
The last line fails because I am not sure how to structure it. Here is
the equivelent VBscript
Set objGroup = GetObject(“WinNT://” & strComputer &
“/Administrators,group”)
For Each mem In objGroup.Members
WScript.echo vbTab & Right(mem.adsPath,Len(mem.adsPath) -
8)
I thank any help.
timgerrlists wrote:
fails
The last line fails because I am not sure how to structure it. Here is
the equivelent VBscript
Set objGroup = GetObject(“WinNT://” & strComputer &
“/Administrators,group”)
For Each mem In objGroup.Members
WScript.echo vbTab & Right(mem.adsPath,Len(mem.adsPath) -
8)
The following are semantically equivalent. Choose the prettier of the
two.
mgmt.Members.each {|person| puts person.AdsPath[8…-1] }
for person in mgmt.Members
puts person.AdsPath[8…-1]
end
I thank any help.
You’re welcome.
Cheers,
Dave
Dave B. wrote:
mgmt.InstancesOf(“Members”).each{|person| puts person.Name} <---- This
You’re welcome.
Cheers,
Dave
Dave thank you for the informaiton but I am getting some errors, "
Untitled2.rb:2: undefined local variable or method `cpuName’ for
main:Object (NameError)" Not sure what to do here.
Thanks,
timgerr
timgerrlists wrote:
Dave thank you for the informaiton but I am getting some errors, "
Untitled2.rb:2: undefined local variable or method `cpuName’ for
main:Object (NameError)" Not sure what to do here.
You haven’t defined cpuName. If you post the script you’re using, I can
be
more specific. The following script should work just like the VBScript
you
posted. (You might notice it also looks very similar.)
require ‘win32ole’
strComputer = “localhost”
objGroup =
WIN32OLE.connect(“WinNT://#{strComputer}/Administrators,group”)
for mem in objGroup.Members
puts “\t” + mem.adsPath[8…-1]
end
Cheers,
Dave
Dave B. wrote:
strComputer = “localhost”
objGroup = WIN32OLE.connect(“WinNT://#{strComputer}/Administrators,group”)
for mem in objGroup.Members
puts “\t” + mem.adsPath[8…-1]
end
Cheers,
Dave
Thank you, it now works, can you tell me one thing, ( I am learning)
what does [8…-1] mean in the script “puts “\t” + mem.adsPath[8…-1]”.
Thanks again.
On 11/21/05, timgerrlists [email protected] wrote:
Thank you, it now works, can you tell me one thing, ( I am learning)
what does [8…-1] mean in the script “puts “\t” + mem.adsPath[8…-1]”.
Indexing with a range [something…-1] will go to the end of the
array/string.
irb(main):001:0> a = [0, 1, 2, 3, 4]
=> [0, 1, 2, 3, 4]
irb(main):002:0> a[2…-1]
=> [2, 3, 4]
irb(main):003:0> b = “Hello, World!”
=> “Hello, World!”
irb(main):005:0> b[7…-1]
=> “World!”