(WAL) – Workflow Example – Removal of a multivalued reference attribute
Special Thanks to Mr. David Hodge for putting the WAL Workflow Documentation together
Things to keep in mind
• the RemoveValues function requires a “List” to be passed to it. Adding in the GUID into the RemoveValues function didn’t seem to do it.
• An example PowerShell activity that allows you to build a list of object GUIDs to pass to the Update Resources activity.
Referencing https://social.technet.microsoft.com/Forums/en-US/63213b2d-4f31-416d-8e70-b871f37a7db8/removevaluesstringlist-not-removing-values?forum=Mimwal
Below is how I modified it… We could probably be more elegant by add
function New-GenericObject
{
<#
.Synopsis
Create a new generic object.
.Description
Create a new generic object.
.Example
New-GenericObject -TypeName System.Collections.Generic.List -TypeParameters Microsoft.MetadirectoryServices.CSEntryChange
#>
[CmdletBinding()]
[OutputType([object])]
param(
[parameter(Mandatory = $true)]
[string]
$TypeName,
[parameter(Mandatory = $true)]
[string[]]
$TypeParameters,
[parameter(Mandatory = $false)]
[object[]]
$ConstructorParameters
)
process
{
$genericTypeName = $typeName + '`' + $typeParameters.Count
$genericType = [Type]$genericTypeName
if (!$genericType)
{
throw "Could not find generic type $genericTypeName"
}
# Bind the type arguments to it
$typedParameters = [type[]] $TypeParameters
$closedType = $genericType.MakeGenericType($typedParameters)
if (!$closedType)
{
throw "Could not make closed type $genericType"
}
# Create the closed version of the generic type, don't forget comma prefix
,[Activator]::CreateInstance($closedType, $constructorParameters)
}
}
$MembersToAdd = New-GenericObject System.Collections.Generic.List Microsoft.ResourceManagement.WebServices.UniqueIdentifier
$MembersToRemove = New-GenericObject System.Collections.Generic.List Microsoft.ResourceManagement.WebServices.UniqueIdentifier
#########################################################
#Example of how to add/remove a MIM Object by GUID
#########################################################
#$FIMService = New-Object Microsoft.ResourceManagement.WebServices.UniqueIdentifier("e05d1f1b-3d5e-4014-baa6-94dee7d68c89")
#$BulitInSyncAccount = New-Object Microsoft.ResourceManagement.WebServices.UniqueIdentifier("fb89aefa-5ea1-47f1-8890-abe7797d6497")
#$MembersToAdd.Add($FIMService)
#$MembersToAdd.Add($BulitInSyncAccount)
#$MembersToRemove.Add($FIMService)
#$MembersToRemove.Add($BulitInSyncAccount)
$ObjectID = New-Object Microsoft.ResourceManagement.WebServices.UniqueIdentifier("e05d1f1b-3d5e-4014-baa6-999999999999")
$MembersToRemove.Add($ObjectID)
return @{ "MembersToAdd" = $MembersToAdd; "MembersToRemove" = $MembersToRemove }