Вывод на печать функции Vbscript

Я создал 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

Кто-нибудь может мне помочь ?


person yayantritaryana    schedule 14.03.2015    source источник


Ответы (1)


Функция имеет назначение (например, , предоставляя строку имен групп, разделенных пробелами). Для этого вы присваиваете желаемый результат имени функции (другие языки используют какой-то оператор возврата):

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

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

выход:

cscript 29053176.vbs
Group=pi pa po

Функция не должна иметь побочные эффекты (например,

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()
person Ekkehard.Horner    schedule 14.03.2015