CognosScript Editor是一个脚本编辑器,可以通过编写脚本和Cognos的一些产品进行交互。CognosScript实际上应该就是vbscript,语法基本一样,只是提供了Cognos特有的对象接口调用。
下面是使用CognosScript Editor编写的一段查询Access Manager(使用LDAP做为安全源)中所有用户数并且打印所有用户名的脚本,很久不写代码,一个小小的递归函数就折腾了一个上午,汗-_-!
CognosScript Editor这个工具在很多Cognos产品中都没有提供,我是在Impromptu中找到的。
Option Explicit
dim usercnt as integer
sub Get_User_Count(objFolder as Object)
if objFolder.folders.count = 0 then
exit sub
end if
dim i as integer
for i=1 to objFolder.folders.count
usercnt = usercnt + objFolder.folders.Item(i).users.count
dim j as integer
for j=1 to objFolder.folders.Item(i).users.count
Print #1,objFolder.folders.Item(i).users.item(j)
next j
Get_User_Count objFolder.folders.Item(i)
next i
end sub
sub main
dim objAuthApp as object
dim objAuthDoc as Object
dim objFolder as Object
Const NameSpace = "default"
Const AdminUser = "Administrator"
Const AdminSignon = ""
Const LogFileName = "c:\CFUsers.Txt"
Open LogFileName For Output As #1
set objAuthApp = CreateObject("Authenticator2.Application")
set objAuthDoc = objAuthApp.Documents.OpenWithBasicSignon(NameSpace,AdminUser ,AdminSignon,0)
usercnt = objAuthDoc.UserFolder.users.count
dim i as integer
for i=1 to objAuthDoc.UserFolder.users.count
Print #1,objAuthDoc.UserFolder.users.item(i)
next i
Get_User_Count objAuthDoc.UserFolder
Print #1, "=============================="
Print #1, "There are " & usercnt & " users"
msgbox "There are " & usercnt & " users. Please check " & logFileName & " to get the details"
objAuthapp.quit
set objFolder = Nothing
set objAuthDoc = Nothing
set objAuthApp = Nothing
Close #1
end sub
dim usercnt as integer
sub Get_User_Count(objFolder as Object)
if objFolder.folders.count = 0 then
exit sub
end if
dim i as integer
for i=1 to objFolder.folders.count
usercnt = usercnt + objFolder.folders.Item(i).users.count
dim j as integer
for j=1 to objFolder.folders.Item(i).users.count
Print #1,objFolder.folders.Item(i).users.item(j)
next j
Get_User_Count objFolder.folders.Item(i)
next i
end sub
sub main
dim objAuthApp as object
dim objAuthDoc as Object
dim objFolder as Object
Const NameSpace = "default"
Const AdminUser = "Administrator"
Const AdminSignon = ""
Const LogFileName = "c:\CFUsers.Txt"
Open LogFileName For Output As #1
set objAuthApp = CreateObject("Authenticator2.Application")
set objAuthDoc = objAuthApp.Documents.OpenWithBasicSignon(NameSpace,AdminUser ,AdminSignon,0)
usercnt = objAuthDoc.UserFolder.users.count
dim i as integer
for i=1 to objAuthDoc.UserFolder.users.count
Print #1,objAuthDoc.UserFolder.users.item(i)
next i
Get_User_Count objAuthDoc.UserFolder
Print #1, "=============================="
Print #1, "There are " & usercnt & " users"
msgbox "There are " & usercnt & " users. Please check " & logFileName & " to get the details"
objAuthapp.quit
set objFolder = Nothing
set objAuthDoc = Nothing
set objAuthApp = Nothing
Close #1
end sub