Вывод функции 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

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

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()
Другие вопросы по тегам