Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

vbscript - get workgroup name ?

96 views
Skip to first unread message

Vilius Mock�nas

unread,
Jul 12, 2009, 11:53:22 AM7/12/09
to
Hi,

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

thanks
Vilius


Richard Mueller [MVP]

unread,
Jul 12, 2009, 12:24:15 PM7/12/09
to
Vilius wrote:

>
> 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
--


rusga

unread,
Jul 12, 2009, 12:43:32 PM7/12/09
to
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 <v_moc...@yahoo.com>
wrote:

F. Dunoyer

unread,
Jul 12, 2009, 3:32:21 PM7/12/09
to
Richard Mueller [MVP] a ᅵcrit :

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]

unread,
Jul 12, 2009, 4:44:03 PM7/12/09
to

"F. Dunoyer" <wdunoyer-nimportequoi@laposte~.net> wrote in message
news:mn.650c7d9762...@laposte.net...
> Richard Mueller [MVP] a �crit :
> 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

unread,
Jul 13, 2009, 7:51:36 AM7/13/09
to
Richard Mueller [MVP] a ᅵcrit :
> "F. Dunoyer" <wdunoyer-nimportequoi@laposte~.net> wrote in message
> news:mn.650c7d9762...@laposte.net...
>> Richard Mueller [MVP] a ᅵcrit :

>>> Vilius wrote:
>>>
>>>>
>>>> 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.

> I also do not know what
> IADsWinNTSystemInfo.DomainName returns when the computer belongs to a
> workgroup.

test ...
On laptop (Workgroup) IADsWinNTSystemInfo.DomainName ) %computername%
:(

> 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/


Alex K. Angelopoulos dot dot again at

unread,
Jul 14, 2009, 7:31:47 AM7/14/09
to
"F. Dunoyer" <wdunoyer-nimportequoi@laposte~.net> wrote in message
news:mn.6b3f7d97a6...@laposte.net...

> Richard Mueller [MVP] a ᅵcrit :

>> 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.

Pereira@discussions.microsoft.com Renato Pereira

unread,
Sep 21, 2009, 9:55:02 AM9/21/09
to
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


"rusga" wrote:

> 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 <v_moc...@yahoo.com>

asdf

unread,
Dec 6, 2009, 4:15:28 AM12/6/09
to
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.


"Renato Pereira" <Renato Per...@discussions.microsoft.com> wrote in message
news:5EFAFF50-6041-422B...@microsoft.com...

0 new messages