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