The PowerShell cmdlets make it easy to work with attributes of different data types and multivalued properties.
Date data types
The client will accept both ISO8601 date formats (yyyy-MM-ddT00:00:00.000) as well as native DateTime values. Note that when providing the date as a string, the date must be in universal time.
# Sets the expiry date to the current date and time
$obj = Get-Resource -ObjectType Person -AttributeName AccountName -AttributeValue testuser
$obj.ExpiryDate = [DateTime]::Now
Save-Resource $obj
# Sets the expiry date to a specific value
$obj.ExpiryDate = "2020-01-01T00:00:00.000"
Save-Resource $obj
Reference data types
References attributes can be any of the following
GUID object
String representation of a GUID
Another resource object
The native UniqueValue data type from another reference attribute
# Sets the value of a person's manager attribute to a known ID
$obj = Get-Resource -ObjectType Person -AttributeName AccountName -AttributeValue testuser
$obj.Manager = '7fb2b853-24f0-4498-9534-4e10589723c4'
Save-Resource $obj
# Sets the value of a person's manager attribute to that of another object
$obj.Manager = GetResource -ObjectType Person -AttributeName AccountName -AttributeValue testuser2
Save-Resource $obj
Binary data types
Binary data types can be any of the following
A byte array (byte[])
A base-64 encoded binary string
# Sets the value of the ObjectSID attribute to a base-64 encoded string
$obj = Get-Resource -ObjectType Person -AttributeName AccountName -AttributeValue testuser
$obj.ObjectSID = "AQUAAAAAAAUVAAAAFYLkaG79nJrWb05iFzcCAA=="
Save-Resource $obj
# Sets the value of the ObjectSID attribute to a byte array
$obj = Get-Resource -ObjectType Person -AttributeName AccountName -AttributeValue testuser
$obj.ObjectSID = [Byte[]] (0, 1, 2, 3)
Save-Resource $obj
Integer data types
Integer data types can be any of the following
A 32-bit integer (Int32 or int)
A 64-bit integer (Int64 or long)
A string representation that can be converted to an Int64 value
# Sets the freeze count using an integer value
$obj = Get-Resource -ObjectType Person -AttributeName AccountName -AttributeValue testuser
$obj.FreezeCount = 5
Save-Resource $obj
# Sets the freeze count using a string value
$obj = Get-Resource -ObjectType Person -AttributeName AccountName -AttributeValue testuser
$obj.FreezeCount = "5"
Save-Resource $obj
Working with multivalued attributes
# Setting a multivalued attribute
$obj = Get-Resource -ObjectType Person -AttributeName AccountName -AttributeValue testuser
$obj.jobTitles = @("Manager", "Engineer")
Save-Resource $obj
# Adding a value to a multivalued attribute
$obj = Get-Resource -ObjectType Person -AttributeName AccountName -AttributeValue testuser
$obj.jobTitles.Add("Developer");
Save-Resource $obj
# Removing a value from a multivalued attribute
$obj = Get-Resource -ObjectType Person -AttributeName AccountName -AttributeValue testuser
$obj.jobTitles.Remove("Developer");
Save-Resource $obj