Vbscript 函数打印输出

Vbscript Function Print Output

我已经创建了 VBscript 来枚举组中的用户

Function GetUserInGroup() 
strComputer = "localhost"
Set colGroups = GetObject("WinNT://" & strComputer & "")
colGroups.Filter = Array("group")
For Each objGroup In colGroups
    For Each objUser in objGroup.Members
        If objUser.name = "yayantritaryana" Then
            WScript.stdout.write objGroup.Name + " "
        End If
    Next
Next
End Function
WScript.stdout.write "Group=" + GetUserInGroup

但是当我执行它时,输出不是我所期望的

我想要的输出就像

Group=Administrator SQLAdmin Sysadmin

有人可以帮助我吗?

A Function 有一个目的(例如,传递一串 space 分隔的组名)。为此,您将所需的结果分配给函数的名称(其他语言使用某种 return 语句):

Function GetUserInGroup()
    GetUserInGroup = "pi pa po"
End Function

WScript.stdout.write "Group=" & GetUserInGroup()

输出:

cscript 29053176.vbs
Group=pi pa po

一个函数不应该有 side-effects(比如你的

WScript.stdout.write objGroup.Name + " "

将名称打印到控制台 before 你在脚本的最后一行输出 "Group=")。而是连接 objGroup.Names.

字符串连接运算符是&

函数调用的参数列表(可能为空)必须用()括起来;这些参数列表 () 对于 Sub 调用是非法的。

一些额外的代码作为思考的食物:

Function GetUserInGroup()
    For Each s In Split("pi pa po")
        GetUserInGroup = GetUserInGroup   & s & "*"
'       GetUserInGroup = GetUserInGroup() & s & "*"
    Next
End Function

WScript.stdout.write "Group=" & GetUserInGroup()