Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Чтение свойств объекта с динамическим именем (http://forum.oszone.net/showthread.php?t=297488)

Spooner 26-03-2015 10:48 2487768

Чтение свойств объекта с динамическим именем
 
Есть скрипт:

Код:

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 2487771

Цитата:

Цитата Spooner
SOME LDAP QUERY »

Что там конкретно?

Spooner 26-03-2015 11:06 2487778

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 2487903

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 2488341

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


Время: 21:21.

Время: 21:21.
© OSzone.net 2001-