4/13/2011

vbScript - set permissons on ConfigMgr Objects in bulk

This little vbscript loops throught the file SetPermissons.txt and creates all class and instance permissons for your ConfigMgr Objects which are defined

File Structure must be:
1st postition: Object Level (Possible Values: Class(C) or Instance (I))
2nd postition: Object Type (COLLECTION, ADVERTISEMENT, PACKAGE, ...)
3rd postition: Object Name (If Object Level is Class, the Name is not used. Best value in this case is "N/A")
4th postition: Username (Format: domain\username)
5th postition: Permissons (Format: Permisson1&Permisson2&...) - For all Permissons on an Object use keyword "FULL". Check the lower part of the vbScript for detailed information. Also note that the permissons have to make sense. So please first check the available permissons for each object in your ConfigMgr Console

# are and blank lines are ignored
# are available for comments

The SetPermissons.txt file should look like this:

###########################################################################
############################### EXAMPLES ##################################
###########################################################################
### I;COLLECTION;All Systems;mydomain\myuser;READ&MODIFY&READ_RESOURCE
### I;COLLECTION;All Systems;mydomain\myuser2;READ&ADVERTISE&DELETE_RESOURCE
### I;PACKAGE;Adobe_Reader;mydomain\myuser2;DISTRIBUTE
### I;PACKAGE;Adobe_Reader;mydomain\myuser;MODIFY&DISTRIBUTE
### I;ADVERTISEMENT;Install_Adobe_Reader;mydomain\myuse;FULL
### C;SITE;N/A;mydomain\myuser;FULL
### C;TASKSEQUENCE;N/A;mydomain\myuser2;READ&MODIFY
###########################################################################
###########################################################################
###########################################################################

#Set Collections Permissons
I;Collection;MyCollectionABC;mydomain\BillGates;READ&MODIFY&READ_RESOURCE
I;Collection;MyCollectionXYZ;mydomain\SteveBallmer;READ&ADVERTISE&DELETE_RESOURCE

#Set Package Permissons
I;PACKAGE;Adobe_Reader;mydomain\BillGates;DISTRIBUTE
I;PACKAGE;Adobe_Reader;mydomain\SteveBallmer;READ&DISTRIBUTE
I;PACKAGE;Adobe_Reader;mydomain\ElvisPresley;READ&MODIFY&DISTRIBUTE

#Set Advertisement Permissons
I;Advertisement;Repair_Java;mydomain\SteveBallmer;READ

#Set Permissons for the new HelpDesk Employee
I;COLLECTION;MyCollection;mydomain\johnwayne;READ
I;COLLECTION;HisCollection;mydomain\johnwayne;READ&MODFIY
I;Advertisement;Uninstall_7ZIP;mydomain\johnwayne;READ&DELETE
C;COLLECTION;N/A;mydomain\johnwayne;READ
C;SITE;N/A;mydomain\johnwayne;READ&IMPORTMACHINE

#Set Permissons for the Group OSD Admins
C;OSINSTALLPACKAGE;N/A;mydomain\OSDAdmins;FULL
C;COMPUTERASSOCIATION;N/A;mydomain\OSDAdmins;READ&DELETE&ADMINISTER&CREATE
C;OSIMAGE;N/A;mydomain\OSDAdmins;FULL
C;TASKSEQUENCE;N/A;mydomain\OSDAdmins;FULL
C;DRIVERPACKAGE;N/A;mydomain\OSDAdmins;FULL
C;DEVICEDRIVER;N/A;mydomain\OSDAdmins;FULL


The vbScript is the below code - Have fun ;)
Note: There's not build in a lot of error handling, so please first test it carefully

  1. '************************************************************************************************************  
  2. ' Jonas Hettich  
  3. '************************************************************************************************************  
  4. '  
  5. ' Ver 1.00 - 13.04.2011 - initial version  
  6. '  
  7. ' What this script does:  
  8. ' This Scripts creates the Permissons defined in the file SetPermissons.txt  
  9. '  
  10. ' Not Supported: Instace Rights for Drivers, Asset Intelligence  
  11. '************************************************************************************************************  
  12.   
  13. result = MsgBox("Do you really want to create the Collection Permissons?", vbYesNo)  
  14. If result = vbNo Then WScript.Quit  
  15.   
  16. Dim strChoosenPermissons  
  17. Dim strSiteServer : strSiteServer = "<servername>"  
  18. Dim strSitecode : strSitecode = "<sitecode>"  
  19. Dim objSWbemLocator : Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator")  
  20. Dim objSWbemServices : Set objSWbemServices = objSWbemLocator.ConnectServer(strSiteServer,"root/sms/site_" & strSitecode)  
  21.   
  22. Dim objFSO : Set objFSO = CreateObject("Scripting.FileSystemObject")  
  23. Dim objFile : Set objFile = objFSO.OpenTextFile("SetPermissons.txt")  
  24. Dim strCurrentLine  
  25. Dim strObjectsType, strObjectName, strUser, strPermissons, strObjectEnv  
  26.   
  27. 'Loop the Source File  
  28. Do While not objFile.AtEndOfStream  
  29.  strCurrentLine = objFile.ReadLine  
  30.    
  31.  'Skip Comment and Blank lines  
  32.  If strCurrentLine <> "" Then  
  33.   If Not Left(strCurrentLine,1) = "#" Then  
  34.      
  35.    'Parse the information  
  36.    strObjectEnv = Ucase(Split(strCurrentLine,";")(0))  
  37.    strObjectsType = Ucase(Split(strCurrentLine,";")(1))  
  38.    strObjectName = Ucase(Split(strCurrentLine,";")(2))  
  39.    strUser = Ucase(Split(strCurrentLine,";")(3))  
  40.    strPermissons = Ucase(Split(strCurrentLine,";")(4))  
  41.      
  42.    Call SetInstanceRights(strObjectEnv,strObjectsType, strObjectName, strUser, strPermissons)  
  43.   
  44.    'Reset the Permissons for the next action  
  45.    strChoosenPermissons = 0  
  46.      
  47.   End If  
  48.  End If  
  49.    
  50.   
  51. Loop  
  52.   
  53. Function NameToID(strObjectType,strObjectName)  
  54. Dim colResuls, objResult  
  55.   
  56. Select Case (strObjectType)  
  57. Case("COLLECTION")  
  58.   
  59.  Set colResults = objSWbemServices.ExecQuery ("select * from SMS_Collection where Name='" & strObjectName & "'")  
  60.  For Each objResult In colResults  
  61.   NameToID = objResult.CollectionID  
  62.  Next  
  63.   
  64. Case("PACKAGE")  
  65.   
  66.  Set colResults = objSWbemServices.ExecQuery ("select * from SMS_Package where Name='" & strObjectName & "'")  
  67.  For Each objResult In colResults  
  68.   NameToID = objResult.PackageID  
  69.  Next  
  70.    
  71. Case ("ADVERTISEMENT")  
  72.   
  73.  Set colResults = objSWbemServices.ExecQuery ("select * from SMS_Advertisement where AdvertisementName='" & strObjectName & "'")  
  74.  For Each objResult In colResults  
  75.   NameToID = objResult.AdvertisementID  
  76.  Next  
  77.    
  78. Case ("TASKSEQUENCE")  
  79.   
  80.  Set colResults = objSWbemServices.ExecQuery ("Select * from SMS_TaskSequencePackage where Name='" & strObjectName & "'")  
  81.  For Each objResult In colResults  
  82.   NameToID = objResult.PackageID  
  83.  Next  
  84.    
  85. Case ("OSINSTALLPACKAGE")  
  86.   
  87.  Set colResults = objSWbemServices.ExecQuery ("Select * from SMS_OperatingSystemInstallPackage where Name='" & strObjectName & "'")  
  88.  For Each objResult In colResults  
  89.   NameToID = objResult.PackageID  
  90.  Next  
  91.   
  92. Case ("OSIMAGE")  
  93.   
  94.  Set colResults = objSWbemServices.ExecQuery ("Select * from SMS_ImagePackage where Name='" & strObjectName & "'")  
  95.  For Each objResult In colResults  
  96.   NameToID = objResult.PackageID  
  97.  Next   
  98.   
  99. Case ("BOOTIMAGE")  
  100.   
  101.  Set colResults = objSWbemServices.ExecQuery ("Select * from SMS_BootImagePackage where Name='" & strObjectName & "'")  
  102.  For Each objResult In colResults  
  103.   NameToID = objResult.PackageID  
  104.  Next    
  105.   
  106. Case ("DRIVERPACKAGE")  
  107.   
  108.  Set colResults = objSWbemServices.ExecQuery ("Select * from SMS_DriverPackage where Name='" & strObjectName & "'")  
  109.  For Each objResult In colResults  
  110.   NameToID = objResult.PackageID  
  111.  Next  
  112. Case Else  
  113.  Log "Error: Objecttype not supported"  
  114.  Exit Function  
  115. End Select  
  116.   
  117. End Function  
  118.   
  119. Function SetInstanceRights(ObjectEnv, ObjectType, ObjectName, User, Permissons)  
  120.  Dim arrPermissons, strPermisson  
  121.  Dim strObjectID  
  122.  Dim objUserPermissions  
  123.    
  124.  'Choose between Class and Instance Permissons  
  125.  If ObjectEnv = "I" Then  
  126.   Set objUserPermissions = objSWbemServices.Get("SMS_UserInstancePermissions")  
  127.   Log vbNewLine &"*** Configure Instance Permissons ***"  
  128.  ElseIf ObjectEnv = "C" Then  
  129.   Set objUserPermissions = objSWbemServices.Get("SMS_UserClassPermissions")  
  130.   Log vbNewLine &"*** Configure Class Permissons ***"  
  131.  Else  
  132.   Log "Error: Object Environment not available. Must be Class(C) or Instance(I)"  
  133.   WScript.Quit  
  134.  End If  
  135.    
  136.    
  137.  'Create UserInstancePermissonsObject  
  138.  Set objNewUserPermissions = objUserPermissions.SpawnInstance_  
  139.    
  140.  'Set the Objecttype  
  141.  Select Case (ObjectType)  
  142.  Case "COLLECTION"  
  143.   objNewUserPermissions.ObjectKey = 1  
  144.  Case "PACKAGE"  
  145.   objNewUserPermissions.ObjectKey = 2  
  146.  Case "ADVERTISEMENT"  
  147.   objNewUserPermissions.ObjectKey = 3  
  148.  Case "STATUSMESSAGE"  
  149.   objNewUserPermissions.ObjectKey = 4  
  150.  Case "SITE"  
  151.   objNewUserPermissions.ObjectKey = 6  
  152.  Case "QUERY"  
  153.   objNewUserPermissions.ObjectKey = 7  
  154.  Case "REPORT"  
  155.   objNewUserPermissions.ObjectKey = 8  
  156.  Case "SOFTWAREMETERINGRULE"  
  157.   objNewUserPermissions.ObjectKey = 9  
  158.  Case "APPLICABLEUPDATESSUMMARY"  
  159.   objNewUserPermissions.ObjectKey = 10  
  160.  Case "CONFIGURATIONITEMS"  
  161.   objNewUserPermissions.ObjectKey = 11  
  162.  Case "OSINSTALLPACKAGE"  
  163.   objNewUserPermissions.ObjectKey = 14  
  164.  Case "DEPLOYMENTTEMPLATE"  
  165.   objNewUserPermissions.ObjectKey = 15  
  166.  Case "DEPLOYMENT"  
  167.   objNewUserPermissions.ObjectKey = 16  
  168.  Case "COMPUTERASSOCIATION"  
  169.   objNewUserPermissions.ObjectKey = 17  
  170.  Case "OSIMAGE"  
  171.   objNewUserPermissions.ObjectKey = 18  
  172.  Case "BOOTIMAGE"  
  173.   objNewUserPermissions.ObjectKey = 19  
  174.  Case "TASKSEQUENCE"  
  175.   objNewUserPermissions.ObjectKey = 20  
  176.  Case "DEVICESETTINGPACKAGE"  
  177.   objNewUserPermissions.ObjectKey = 21  
  178.  Case "DEVICESETTINGITEM"  
  179.   objNewUserPermissions.ObjectKey = 22  
  180.  Case "DRIVERPACKAGE"  
  181.   objNewUserPermissions.ObjectKey = 23  
  182.  Case "DEPLYOMENTPACKAGE"  
  183.   objNewUserPermissions.ObjectKey = 24  
  184.  Case "DEVICEDRIVER"  
  185.   objNewUserPermissions.ObjectKey = 25  
  186.  Case Else  
  187.   Log "Error: Objecttype not supported"  
  188.   Exit Function  
  189.  End Select   
  190.    
  191.    
  192.  'Set the Object ID  
  193.  If ObjectEnv = "I" Then  
  194.   strObjectID = NameToID(ObjectType,ObjectName)  
  195.   If strObjectID <> "" Then   
  196.    objNewUserPermissions.InstanceKey = strObjectID  
  197.   Else  
  198.    Log "Error: " &ObjectType &" was not found: " &ObjectName  
  199.    WScript.Quit  
  200.   End If  
  201.  End If  
  202.    
  203.  'Set the User or Group  
  204.  objNewUserPermissions.UserName = User  
  205.    
  206.  'Set the Permissons  
  207.  If Permissons = "FULL" Then  
  208.   'Set Full Permissons String  
  209.   Permissons = FullPermissons(ObjectType,ObjectEnv)  
  210.  End If  
  211.   
  212.    
  213.  arrPermissons = Split(Permissons,"&")  
  214.  For Each strPermisson In arrPermissons  
  215.     
  216.   'Parse the Permissons  
  217.   'http://msdn.microsoft.com/en-us/library/cc143194.aspx  
  218.   Select Case UCASE(strPermisson)  
  219.   Case "READ"  
  220.    strChoosenPermissons = strChoosenPermissons + 1  
  221.   Case "MODIFY"  
  222.    strChoosenPermissons = strChoosenPermissons + 2  
  223.   Case "DELETE"  
  224.    strChoosenPermissons = strChoosenPermissons + 4  
  225.   Case "DISTRIBUTE"  
  226.    strChoosenPermissons = strChoosenPermissons + 8  
  227.   Case "REMOTE_CONTROL"  
  228.    strChoosenPermissons = strChoosenPermissons + 32  
  229.   Case "ADVERTISE"  
  230.    strChoosenPermissons = strChoosenPermissons + 64  
  231.   Case "MODIFY_RESOURCE"  
  232.    strChoosenPermissons = strChoosenPermissons + 128  
  233.   Case "ADMINISTER"  
  234.    strChoosenPermissons = strChoosenPermissons + 256  
  235.   Case "DELETE_RESOURCE"  
  236.    strChoosenPermissons = strChoosenPermissons + 512  
  237.   Case "CREATE"  
  238.    If ObjectEnv = "I" And ObjectType = "COLLECTION" Then  
  239.     'Collection Instances do no have the permissons CREATE, ADMINISTER, DELEGATE  
  240.     Log "ERROR: CREATE, ADMINISTER and DELEGATE permissons are not possible on Collection Instances"  
  241.     Exit Function  
  242.    Else  
  243.     strChoosenPermissons = strChoosenPermissons + 1024  
  244.    End If  
  245.   Case "VIEWCOLLECTEDFILES"  
  246.    strChoosenPermissons = strChoosenPermissons + 2048  
  247.   Case "READ_RESOURCE"  
  248.    strChoosenPermissons = strChoosenPermissons + 4096  
  249.   Case "DELEGATE"  
  250.    strChoosenPermissons = strChoosenPermissons + 8192  
  251.   Case "METER"  
  252.    strChoosenPermissons = strChoosenPermissons + 16384  
  253.   Case "MANAGESQLCOMMAND"  
  254.    strChoosenPermissons = strChoosenPermissons + 32768  
  255.   Case "MANAGESTATUSFILTER"  
  256.    strChoosenPermissons = strChoosenPermissons + 65536  
  257.   Case "MANAGEFOLDERS"  
  258.    strChoosenPermissons = strChoosenPermissons + 131072  
  259.   Case "NETWORKACCESS"  
  260.    strChoosenPermissons = strChoosenPermissons + 262144  
  261.   Case "IMPORTMACHINE"  
  262.    strChoosenPermissons = strChoosenPermissons + 524288  
  263.   Case "CREATETASKSEQUENCEMEDIA"  
  264.    strChoosenPermissons = strChoosenPermissons + 1048576  
  265.   Case "MODIFYCOLLECTIONSETTING"  
  266.    strChoosenPermissons = strChoosenPermissons + 2097152  
  267.   Case "MANAGEOSDCERTIFICATE"  
  268.    strChoosenPermissons = strChoosenPermissons + 4194304  
  269.   Case "RECOVERUSERSTATE"  
  270.    strChoosenPermissons = strChoosenPermissons + 8388608  
  271.   Case "MANAGEMGMTCONROLLERS"  
  272.    strChoosenPermissons = strChoosenPermissons + 16777216  
  273.   Case "VIEWMGMTCONROLLERS"  
  274.    strChoosenPermissons = strChoosenPermissons + 33554432  
  275.   Case Else  
  276.    Log "Error: Permissons not supported"  
  277.   End Select   
  278.       
  279.  Next  
  280.   
  281.   
  282.  If ObjectEnv = "I" Then  
  283.   objNewUserPermissions.InstancePermissions = strChoosenPermissons  
  284.  ElseIf ObjectEnv = "C" Then  
  285.   objNewUserPermissions.ClassPermissions  = strChoosenPermissons  
  286.  End If  
  287.   
  288.    
  289.  'Creating Permissons  
  290.  On Error Resume Next  
  291.  objNewUserPermissions.put_  
  292.    
  293.    
  294.  If Err.Number = 0 Then  
  295.   Log "Successfully set following permissons:"  
  296.   Log vbTab &" - ObjectType: " &ObjectType  
  297.   Log vbTab &" - ObjectName: " &ObjectName  
  298.   Log vbTab &" - User: " &User  
  299.   Log vbTab &" - Permissons: " &Permissons   
  300.  Else  
  301.   Log "Error (" &Err.Description  &") when trying to create the object:"  
  302.   Log vbTab &" - ObjectType: " &ObjectType  
  303.   Log vbTab &" - ObjectName: " &ObjectName  
  304.   Log vbTab &" - User: " &User  
  305.   Log vbTab &" - Permissons: " &Permissons   
  306.  End If  
  307.   
  308.    
  309.  Set objNewUserPermissions = Nothing  
  310.     
  311. End Function  
  312.   
  313.   
  314. Function FullPermissons(ObjectType,ObjectEnv)  
  315.   
  316. Select Case (ObjectType)  
  317.   
  318. Case "SITE"  
  319.  FullPermissons = "IMPORTMACHINE&DELEGATE&ADMINISTER&CREATE&DELETE&READ&MODIFY&MANAGEOSDCERTIFICATE&MANAGESTATUSFILTER&MANAGESQLCOMMAND&METER"  
  320. Case "OSINSTALLPACKAGE"  
  321.  FullPermissons = "READ&DISTRIBUTE&MODIFY&DELETE&ADMINISTER&CREATE&MANAGEFOLDERS&DELEGATE"  
  322. Case "OSIMAGE"  
  323.  FullPermissons = "READ&DISTRIBUTE&MODIFY&DELETE&ADMINISTER&CREATE&MANAGEFOLDERS&DELEGATE"  
  324. Case "TASKSEQUENCE"  
  325.  FullPermissons = "READ&CREATETASKSEQUENCEMEDIA&MODIFY&DELETE&ADMINISTER&CREATE&MANAGEFOLDERS&DELEGATE"  
  326. Case "DRIVERPACKAGE"  
  327.  FullPermissons = "READ&DISTRIBUTE&MODIFY&DELETE&ADMINISTER&CREATE&MANAGEFOLDERS&DELEGATE"  
  328. Case "STATUSMESSAGE"   
  329.  FullPermissons = "READ&DELETE&CREATE&ADMINISTER"  
  330. Case "QUERY"  
  331.  FullPermissons ="READ&MODIFY&DELETE&ADMINISTER&CREATE&DELEGATE&MANAGEFOLDERS"  
  332. Case "REPORT"  
  333.  FullPermissons = "READ&MODIFY&DELETE&ADMINISTER&CREATE&DELEGATE&MANAGEFOLDERS"  
  334. Case "SOFTWAREMETERINGRULE"  
  335.  FullPermissons = "READ&MODIFY&DELETE&ADMINISTER&CREATE&DELEGATE&MANAGEFOLDERS"  
  336. Case "APPLICABLEUPDATESSUMMARY"  
  337.  FullPermissons = "READ&MODIFY&DELETE&ADMINISTER&CREATE&DELEGATE"  
  338. Case "CONFIGURATIONITEMS"  
  339.  FullPermissons = "READ&MODIFY&DELETE&DISTRIBUTE&ADMINISTER&CREATE&DELEGATE&MANAGEFOLDERS&NETWORKACCESS"  
  340. Case "DEPLOYMENTTEMPLATE"  
  341.  FullPermissons = "READ&MODIFY&DELETE&ADMINISTER&CREATE&DELEGATE"  
  342. Case "DEPLOYMENT"  
  343.  FullPermissons = "READ&MODIFY&DELETE&ADMINISTER&CREATE&DELEGATE"  
  344. Case "DEVICESETTINGPACKAGE"  
  345.  FullPermissons ="READ&MODIFY&DELETE&DISTRIBUTE&ADMINISTER&CREATE&DELEGATE&MANAGEFOLDERS"  
  346. Case "DEVICESETTINGITEM"  
  347.  FullPermissons = "READ&MODIFY&DELETE&ADMINISTER&CREATE&DELEGATE"  
  348. Case "DEPLYOMENTPACKAGE"  
  349.  FullPermissons = "READ&MODIFY&DELETE&DISTRIBUTE&ADMINISTER&CREATE&DELEGATE&MANAGEFOLDERS"  
  350. Case "COLLECTION"  
  351.  If ObjectEnv = "C" Then  
  352.   FullPermissons = "READ&MODIFY&DELETE&CREATE&REMOTE_CONTROL&ADVERTISE&MODIFY_RESOURCE&ADMINISTER&DELETE_RESOURCE&VIEWCOLLECTEDFILES&READ_RESOURCE&DELEGATE&MODIFYCOLLECTIONSETTING&MANAGEMGMTCONROLLERS&VIEWMGMTCONROLLERS"  
  353.  ElseIf ObjectEnv = "I" Then  
  354.   'Collection Instances do no have the permissons CREATE, ADMINISTER, DELEGATE  
  355.   FullPermissons = "READ&MODIFY&DELETE&REMOTE_CONTROL&ADVERTISE&MODIFY_RESOURCE&DELETE_RESOURCE&VIEWCOLLECTEDFILES&READ_RESOURCE&MODIFYCOLLECTIONSETTING&MANAGEMGMTCONROLLERS&VIEWMGMTCONROLLERS"  
  356.  End If  
  357. Case "PACKAGE"  
  358.  FullPermissons = "READ&MODIFY&DELETE&DISTRIBUTE&ADMINISTER&CREATE&DELEGATE&MANAGEFOLDERS"  
  359. Case "ADVERTISEMENT"  
  360.  FullPermissons = "READ&MODIFY&DELETE&ADMINISTER&CREATE&DELEGATE&MANAGEFOLDERS"  
  361. Case "DRIVERPACKAGE"  
  362.  FullPermissons = "READ&MODIFY&DISTRIBUTE&DELETE&ADMINISTER&CREATE&DELEGATE&MANAGEFOLDERS"  
  363. Case "COMPUTERASSOCIATION"  
  364.  FullPermissons = "READ&DELETE&ADMINISTER&CREATE&DELEGATE&MANAGEFOLDERS&RECOVERUSERSTATE"  
  365. Case "DEVICEDRIVER"  
  366.  FullPermissons = "READ&MODIFY&DELETE&ADMINISTER&CREATE&DELEGATE&MANAGEFOLDERS"  
  367. Case "BOOTIMAGE"  
  368.  FullPermissons = "READ&MODIFY&DELETE&DISTRIBUTE&ADMINISTER&CREATE&DELEGATE&MANAGEFOLDERS"  
  369. Case Else  
  370.  Log "Permissons not supported"  
  371. End Select  
  372.   
  373. End Function  
  374.   
  375. Function Log(strTextToLog)  
  376.  WScript.Echo strTextToLog  
  377.     Dim objFile, objLogFile, objLogFile2  
  378.  Dim strFilenameWithoutExtension, intMaxFileSize, n   
  379.         intMaxFileSize = 15 * 1024 * 1024 '15MB   
  380.         'strip ".vbs" from the full path scriptname   
  381.         strFilenameWithoutExtension= left(WScript.ScriptFullName,len(WScript.ScriptFullName)-4)   
  382.     On Error Resume Next   
  383.         n = -1   
  384.         'we need to check the current logfile size 1st - open the current logfile   
  385.         Set objFile = objFSO.getfile(strFilenameWithoutExtension & ".log")   
  386.         'check if the the current logfile is bigger than the max file size   
  387.     If objFile.Size > intMaxFileSize Then   
  388.         'it's bigger - so open the backup log file   
  389.         Set objLogFile2 = objFSO.getfile(strFilenameWithoutExtension & ".lo_")   
  390.         'delete the backup file   
  391.         objLogFile2.Delete   
  392.         'rename the original file to "*.lo_"   
  393.         objFile.name = left(objFile.name, len(objFile.name)-1) & "_"   
  394.                 'close the file   
  395.                 objFile.close   
  396.     End If   
  397.     Set objLogFile = objFSO.opentextfile(strFilenameWithoutExtension & ".log", 8, True)   
  398.     'objLogFile.writeline Date & " - " & Time & " - """ & strTextToLog & """"   
  399.         objLogFile.writeline Date & " - " & Time & " - " & " - """ & strTextToLog & """"   
  400.   If len(strTextToLog) > 78 then strTextToLog = left(strTextToLog,76) & "..."  
  401.         'Log strTextToLog  
  402.     objLogFile.Close   
  403.     Set objFile = Nothing   
  404.     Set objFile2 = Nothing   
  405.     Set oLogFile = Nothing   
  406.     Set oFSOLog = Nothing   
  407.     If Err Then Err.Clear   
  408.     On Error GoTo 0   
  409. End Function  
  410. </sitecode></servername>  

2 comments:

thepip3r said...

Thanks for the script Jonas, I had to adapt it a bit to my environment and way we're setting class-level objects instead of instance-level but it worked like a champ. Thanks for the format. Credit to you and your blog is given.

http://thepip3r.blogspot.com/2011/04/sccm-2007-usergroup-rights-distribution.html


- thepip3r

merowinger said...

Hi thepip3r,
that's why i posted it. Great to hear ;)
best regards
Jonas