Page tree
Skip to end of metadata
Go to start of metadata

Using Scripting Library to Manipulate Group Membership within Business Units

 

The CapaInstaller Scripting Library has some useful functions for manipulating the group memberships of units within the CapaInstaller environment. System administrators can create groups in Business Units with names that match already existing groups at point level. This is legal but posses a problem for manipulating unit membership of groups with similar names because currently there is no way for the CapaInstaller environment to distinguish between groups at point level and groups at Business Unit level. The current implementation of Scripting Library does not allow addition of new parameters to existing functions without severe consequences to existing code so instead of adding a new parameter we chose to expand the use of the sGroup parameter to explicitly describe the location of groups in Business Units. 

When you want to manipulate members of a group in a Business Unit, you simply prefix the sGroup parameter with the constant BU_GROUP_PREFIX. When you do this, the CapaInstaller environment will know that the group you are referring to must exist within a Business Unit. If you try to add a unit to a group that does not currently exist, that group will automatically be created. If you do not prefix sGroup with BU_GROUP_PREFIX, the CapaInstaller environment will manipulate group membership at point level. When listing the group membership of a unit all groups that exist in a Business Unit will have BU_GROUP_PREFIX prefixed in their names.

 

NOTE: These variables are managed by CapaInstaller Windows Agent. If an agent is not running, the values will typically not represent the current state. 

Example

VBScript
If bStatus Then bStatus = CMS_AddComputerToStaticGroup(gsUnitName, "Group Name")
If bStatus Then bStatus = CMS_AddComputerToStaticGroup(gsUnitName, BU_GROUP_PREFIX & "Group Name")

This will add a unit to 'Group Name' at point level and add it to 'Group Name' inside its Business Unit. The selected Business Unit is dynamic and will be selected based on the gsUnitName parameter. If gsUnitName is not linked to a Business Unit, nothing will happen.

Example

VBScript
If bStatus Then bStatus = CMS_GetGroupMembership()
For index = LBound(gaValue) to UBound(gaValue)
  xStatus = Job_WriteLog("Install", "Index #" & index & ": '" & CStr(gaValue(index)) & "'", bStatus, True)
  If CStr(gaValue(index)) = BU_GROUP_PREFIX & "Group Name" Then
    xStatus = Job_WriteLog("Install", "'Unit is member of: '" & CStr(gaValue(index)) & "'", bStatus, True)
  End If
Next

If a unit is a member of a group inside a Business Unit, its group name will have the BU_GROUP_PREFIX prefix. If you need to make string comparisons, you must prefix the group name with the BU_GROUP_PREFIX constant.

Two other variables can be useful in a script:

gbIsMemberOfBusinessUnit can be used to determine if the current unit is linked to a Business Unit.

gsBusinessUnitName can be used to get the name of the Business Unit that a unit is linked to. If the unit is not linked to a Business Unit, this variable will be an empty string.

Example

VBScript
If bStatus And gbIsMemberOfBusinessUnit Then
  If bStatus Then bStatus = CMS_AddComputerToStaticGroup(gsUnitName, BU_GROUP_PREFIX & "Group Name")
End If

If bStatus And gsBusinessUnitName = "Business Unit Name" Then
  If bStatus Then bStatus = CMS_AddComputerToStaticGroup(gsUnitName, BU_GROUP_PREFIX & "Group Name")
End If

You can use these variables to make decisions based on membership and names of Business Units.


  • No labels