Discussion:
vbscript - get workgroup name ?
(too old to reply)
Vilius Mockûnas
2009-07-12 15:53:22 UTC
Permalink
Hi,

How do I get computer workgroup(not domain) name in vbscript ?

thanks
Vilius
Richard Mueller [MVP]
2009-07-12 16:24:15 UTC
Permalink
Post by Vilius Mockûnas
How do I get computer workgroup(not domain) name in vbscript ?
I don't have a workgroup, but I assume there is an environment variable with
the information you need. You can use the wshShell object to retrieve any
environment variable. For example, to retrieve USERDOMAIN:

Set objShell = CreateObject("Wscript.Shell")
Wscript.Echo objShell.Environment("PROCESS").Item("USERDOMAIN")
--
Richard Mueller
MVP Directory Services
Hilltop Lab - http://www.rlmueller.net
--
F. Dunoyer
2009-07-12 19:32:21 UTC
Permalink
Post by Richard Mueller [MVP]
Post by Vilius Mockûnas
How do I get computer workgroup(not domain) name in vbscript ?
I don't have a workgroup, but I assume there is an environment variable with
the information you need. You can use the wshShell object to retrieve any
Set objShell = CreateObject("Wscript.Shell")
Wscript.Echo objShell.Environment("PROCESS").Item("USERDOMAIN")
--
Richard Mueller
MVP Directory Services
Hilltop Lab - http://www.rlmueller.net
hum (sorry for the poor english)
Not realy the right way.
if you are not on domain, USERDOMAIN is COMPUTERNAME

Try wshNetwork Object (
http://msdn.microsoft.com/en-us/library/s6wt333f(VS.85).aspx )

Something lik that
Set WshNetwork = WScript.CreateObject("WScript.Network")
WScript.Echo "Domain = " & WshNetwork.UserDomain
WScript.Echo "Computer Name = " & WshNetwork.ComputerName
WScript.Echo "User Name = " & WshNetwork.UserName

But not good :( because it's alway the same isue : DOMAIN is
%USERDOMAIN%

A good way is to use WMI

set wmi = getobject("winmgmts:")
wql = "select * from win32_computersystem"
set results = wmi.execquery(wql)

For each compsys in results
WScript.Echo "DOMAIN / WORKGROUP : " & compsys.domain
Next
--
François Dunoyer
Astuces pour Windows : http://fds.mvps.org/ta/
Site perso : http://www.fdunoyer.net
Blog : http://fds34.spaces.live.com/
Richard Mueller [MVP]
2009-07-12 20:44:03 UTC
Permalink
Post by F. Dunoyer
Post by Richard Mueller [MVP]
Post by Vilius Mockûnas
How do I get computer workgroup(not domain) name in vbscript ?
I don't have a workgroup, but I assume there is an environment variable
with the information you need. You can use the wshShell object to
Set objShell = CreateObject("Wscript.Shell")
Wscript.Echo objShell.Environment("PROCESS").Item("USERDOMAIN")
--
Richard Mueller
MVP Directory Services
Hilltop Lab - http://www.rlmueller.net
hum (sorry for the poor english)
Not realy the right way.
if you are not on domain, USERDOMAIN is COMPUTERNAME
Try wshNetwork Object (
http://msdn.microsoft.com/en-us/library/s6wt333f(VS.85).aspx )
Something lik that
Set WshNetwork = WScript.CreateObject("WScript.Network")
WScript.Echo "Domain = " & WshNetwork.UserDomain
WScript.Echo "Computer Name = " & WshNetwork.ComputerName
WScript.Echo "User Name = " & WshNetwork.UserName
But not good :( because it's alway the same isue : DOMAIN is %USERDOMAIN%
A good way is to use WMI
set wmi = getobject("winmgmts:")
wql = "select * from win32_computersystem"
set results = wmi.execquery(wql)
For each compsys in results
WScript.Echo "DOMAIN / WORKGROUP : " & compsys.domain
Next
--
François Dunoyer
Astuces pour Windows : http://fds.mvps.org/ta/
Site perso : http://www.fdunoyer.net
Blog : http://fds34.spaces.live.com/
Documentation states that if the computer is not joined to a domain, the
domain property of the Win32_ComputerSystem class is the name of the
workgroup. So the above code will work, but WMI should be slower than other
methods. Also, WMI is not available before Windows 2000 (unless it is
installed separately).

I don't know if there is an environment variable for this, but if there is,
reading it would be faster. I also do not know what
IADsWinNTSystemInfo.DomainName returns when the computer belongs to a
workgroup. I'm surprised I cannot find how to retrieve this, other than with
WMI. I know there is a registry setting in Win9x, but that doesn't work
after Windows 98.
--
Richard Mueller
MVP Directory Services
Hilltop Lab - http://www.rlmueller.net
--
F. Dunoyer
2009-07-13 11:51:36 UTC
Permalink
Post by Richard Mueller [MVP]
Post by Vilius Mockûnas
How do I get computer workgroup(not domain) name in vbscript ?
Documentation states that if the computer is not joined to a domain, the
domain property of the Win32_ComputerSystem class is the name of the
workgroup. So the above code will work, but WMI should be slower than other
methods. Also, WMI is not available before Windows 2000 (unless it is
installed separately).
I don't know if there is an environment variable for this, but if there is,
reading it would be faster.
On my laptop PC (Workgroup PC), I have look all the envirronnement vars
and no mark of workgroup ID.
Post by Richard Mueller [MVP]
I also do not know what
IADsWinNTSystemInfo.DomainName returns when the computer belongs to a
workgroup.
test ...
On laptop (Workgroup) IADsWinNTSystemInfo.DomainName ) %computername%
:(
Post by Richard Mueller [MVP]
I'm surprised I cannot find how to retrieve this, other than with
WMI. I know there is a registry setting in Win9x, but that doesn't work after
Windows 98.
--
Richard Mueller
MVP Directory Services
Hilltop Lab - http://www.rlmueller.net
regards
--
François Dunoyer
Quelques textes qui m'ont séduit : http://fdunoyer.free.fr/textes.htm
Site perso : http://fds.mvps.org
Blog perso : http://fdunoyer.spaces.live.com/
Blog : http://fds34.spaces.live.com/
unknown
2009-07-14 11:31:47 UTC
Permalink
Post by F. Dunoyer
I also do not know what IADsWinNTSystemInfo.DomainName returns when the
computer belongs to a workgroup.
test ...
On laptop (Workgroup) IADsWinNTSystemInfo.DomainName ) %computername% :(
By the way, on reflection it seems to me that the userdomain variable value
and the result from IADsWinNTSystemInfo are logical; the naming is just a
bit weak. A better name would be SecurityDomain.
rusga
2009-07-12 16:43:32 UTC
Permalink
Hi

I guess the fastest way is to read it from the registry with .regread from
the shell object.

If you know one of the workgroups name, you can search for it using the
registry just to track down the key to read from.

Once you know the key to read from, it's a breeze.

Otherwise you can use the WMI, but this way the script must have WMI perms
and it's a lot heavier and slow.

idle,
rusga
Post by Vilius Mockûnas
Hi,
How do I get computer workgroup(not domain) name in vbscript ?
thanks
Vilius
Renato Pereira
2009-09-21 13:55:02 UTC
Permalink
I found the answer!

Set objWMISvc = GetObject( "winmgmts:\\.\root\cimv2" )
Set colItems = objWMISvc.ExecQuery( "Select * from Win32_ComputerSystem", ,
48 )
For Each objItem in colItems
strComputerDomain = objItem.Domain
If objItem.PartOfDomain Then
WScript.Echo "Computer Domain: " & strComputerDomain
Else
WScript.Echo "Workgroup: " & strComputerDomain
End If
Next


* Source: http://www.robvanderwoude.com/vbstech_network_names_domain.php
Post by rusga
Hi
I guess the fastest way is to read it from the registry with .regread from
the shell object.
If you know one of the workgroups name, you can search for it using the
registry just to track down the key to read from.
Once you know the key to read from, it's a breeze.
Otherwise you can use the WMI, but this way the script must have WMI perms
and it's a lot heavier and slow.
idle,
rusga
Post by Vilius Mockûnas
Hi,
How do I get computer workgroup(not domain) name in vbscript ?
thanks
Vilius
asdf
2009-12-06 09:15:28 UTC
Permalink
News Server Retention time tried to make us followers of 'numbers'.

Congratulation to your persistence to leading up to an acceptable
solution, by beating the corporate "hiding the decline" attitude.

Nice

---------------

Yes, you were born before Sept. 2009 and you mind is fresh
for challenges in Dec. 2009.
Post by Renato Pereira
I found the answer!
Set objWMISvc = GetObject( "winmgmts:\\.\root\cimv2" )
Set colItems = objWMISvc.ExecQuery( "Select * from Win32_ComputerSystem", ,
48 )
For Each objItem in colItems
strComputerDomain = objItem.Domain
If objItem.PartOfDomain Then
WScript.Echo "Computer Domain: " & strComputerDomain
Else
WScript.Echo "Workgroup: " & strComputerDomain
End If
Next
* Source: http://www.robvanderwoude.com/vbstech_network_names_domain.php
Post by rusga
Hi
I guess the fastest way is to read it from the registry with .regread from
the shell object.
If you know one of the workgroups name, you can search for it using the
registry just to track down the key to read from.
Once you know the key to read from, it's a breeze.
Otherwise you can use the WMI, but this way the script must have WMI perms
and it's a lot heavier and slow.
idle,
rusga
On Sun, 12 Jul 2009 16:53:22 +0100, Vilius Mockûnas
Post by Vilius Mockûnas
Hi,
How do I get computer workgroup(not domain) name in vbscript ?
thanks
Vilius
Loading...