Назад | Перейти на главную страницу

Экспорт результатов запроса SCCM 2007 через VBScript

Мне интересно, можно ли экспортировать результаты запроса SCCM 2007 через VBScript. Если есть какие-либо предложения, мы будем очень признательны.

Я знаю, что могу экспортировать отчеты через SCCM через VBScript, используя веб-представление отчета, подделав export = yes и отправив форму. Возможно ли что-то подобное с запросом?

Рабочий код как функция VBScript, с которой я закончил:

'sccmQueryAsArray
'Returns: results in an array built based on the columns specified in the call of the function
'   parseInto: an array provided by the calling function that will be filled with the SCCM query results
'   sccmSiteServerName: a string representing the sccm site server we are connecting to
'   sccmSiteCode: a string representing the sccm site code we are connecting to
'   columns: a one dimensional array containing the names of the columns you want to the function to create an array for
'   query: the actual full length query that will be passed to WMI object
'       example call: sccmQueryAsArray data,"server1","sit",array("Name","UsergroupName"),"select Name, UsergroupName, WindowsNTDomain from sms_r_usergroup where AgentName = 'SMS_AD_SECURITY_GROUP_DISCOVERY_AGENT'"
'       results in an array "data" being modified to 2 columns and as many rows as is returned by the query the array would look like:
'           (0)(x) where 0 = the first element in the columns row or Name
'           (1)(x) where 1 = the second element in the columns row or UsergroupName
function sccmQueryAsArray( ByRef parseInto, ByVal sccmSiteServerName, ByVal sccmSiteCode, ByVal columns, ByVal query )

redim preserve parseInto(ubound(columns),0) 'the array that the query information will be parsed into and then returned

dim objWMIService: set objWMIService = getObject("winmgmts://" & sccmSiteServerName & "\root\sms\site_" & sccmSiteCode) 'set up the connection string
dim colGroups: set colGroups = objWMIService.ExecQuery(query) 'execute the query and put the results into colGroups

dim z: z = 0
dim objGroup: for each objGroup in colGroups
    dim y: for y = 0 to ubound(columns) step 1
        dim x: x = "objGroup." & columns(y)
        parseInto(y,z) = eval(x)
    next
redim preserve parseInto(ubound(parseInto,1),ubound(parseInto,2)+1): z = z + 1
next

sccmQueryAsArray = parseInto

end function

Отличный пост. Я просто хотел добавить, что если вы хотите использовать PowerShell вместо VBS, вам следует проверить это:

http://blogs.technet.com/b/manageabilityguys/archive/2009/11/27/more-on-sccm-and-powershell.aspx

SCCM 2012 поставляется со встроенной оболочкой PowerShell, поэтому нет необходимости выполнять это для нового продукта.

Почему бы просто не выполнить запрос в VBScript?

Вы можете подключиться к серверу SCCM в VBScript и использовать ExecQuery для отправки запросов WQL на сервер.

Чтобы использовать простой пример преобразования запроса SCCM в VBScript, у вас может быть запрос, в котором перечислены все группы безопасности AD. Щелкните этот запрос правой кнопкой мыши, выберите "Изменить оператор запроса" и выберите "Показать язык запроса".

У вас должно получиться что-то вроде этого:

select Name, UsergroupName, WindowsNTDomain from sms_r_usergroup where AgentName = 'SMS_AD_SECURITY_GROUP_DISCOVERY_AGENT'

Теперь нажмите «Показать дизайн запроса» и скопируйте имена интересующих вас атрибутов (т. Е. Заголовков столбцов), вы должны получить примерно такой список:

Name, User Group Name, Domain

Чтобы получить фактические имена столбцов SQL для этих столбцов (особенно для столбцов с пробелом), просто посмотрите на запрос WQL на предыдущем шаге, где вы увидите имена столбцов, перечисленные сразу после select команда. У вас должно получиться что-то вроде этого:

Name, UsergroupName, WindowsNTDomain

Теперь просто возьмите все это и поместите в VBScript, например:

'Central SCCM Site Server name
strComputer = "SCCM01"

'Central SCCM Site Code
strSiteCode = "ABC"

'Set up the connection String
Set objWMIService = GetObject("winmgmts://" & strComputer & "\root\sms\site_" & strSiteCode)

'Get the info with a query
Set colGroups = objWMIService.ExecQuery("select Name, UsergroupName, WindowsNTDomain from sms_r_usergroup where AgentName = 'SMS_AD_SECURITY_GROUP_DISCOVERY_AGENT'")

'output the info
For Each objGroup in colGroups
    Wscript.echo objGroup.Name & ", " & objGroup.UsergroupName & ", " & objGroup.WindowsNTDomain
Next 

(очевидно, отредактируйте сервер сайта и строки кода сайта, чтобы они соответствовали вашей среде).