Войти

Показать полную графическую версию : [решено] Чтение свойств объекта с динамическим именем


Spooner
26-03-2015, 10:48
Есть скрипт:


Parameter0 = WScript.Arguments.Item(0)

Set strADsPath = GetObject("SOME LDAP QUERY")

for each strADsPathObject in strADsPath
WScript.Echo strADsPathObject.[Parameter0]
next


Запускаю:
cscript /nologo parameter.vbs PropertyName

Выдаёт ошибку:
Microsoft VBScript runtime error: Object doesn't support this property or method: 'strADsPathObject.Parameter0'

То есть, как-бы так сказать, Parameter0 не преобразуется в собственное значение.

Как можно обратиться к свойству объекта посредством переменной, указанной в качестве свойства объекта?

Iska
26-03-2015, 10:58
SOME LDAP QUERY »
Что там конкретно?

Spooner
26-03-2015, 11:06
LDAP://127.0.0.1:389/OU=Servers,DC=vdi,DC=vmware,DC=int

В запросе проблемы нет, с возвращением объектов - тоже.
Проблема в том, каким образом обратиться к свойству через переменную.

Parameter0 в скрипте возвращает "pae-vm". Но интерпретатор воспринимает его как strADsPathObject.Parameter0, а не strADsPathObject.pae-vm

Iska
26-03-2015, 15:05
Spooner, например, так (корректность/существование атрибутов, заданных аргументами скрипта, в свойствах объектов каталога не проверяется; пример для простых типов данных атрибутов):
Option Explicit

Dim objIADsContainer
Dim objIADs

Dim strArgument


If WScript.Arguments.Count > 0 Then
Set objIADsContainer = GetObject("LDAP://127.0.0.1:389/OU=Servers,DC=vdi,DC=vmware,DC=int")

For Each objIADs In objIADsContainer
For Each strArgument In WScript.Arguments
WScript.Echo strArgument, vbTab, objIADs.Get(strArgument)
Next
Next

Set objIADsContainer = Nothing
Else
' Nothing to do
End If

WScript.Quit 0

Spooner
27-03-2015, 11:42
Вкратце, вместо strADsPathObject.[Parameter0] - использовать метод strADsPathObject.Get(Parameter0). Спасибо! То, что нужно!




© OSzone.net 2001-2012