Transforms/systemFlags.ps1
[CmdletBinding()] param ( [Parameter()] [Switch] $FullLoad ) if($FullLoad) { # From [MS-ADTS]/2.2.10 # https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-adts/1e38247d-8234-4273-9de3-bbf313548631 Add-Type @' using System; [Flags] public enum SystemFlags : uint { DISALLOW_DELETE = 0x80000000, CONFIG_ALLOW_RENAME = 0x40000000, CONFIG_ALLOW_MOVE = 0x20000000, CONFIG_ALLOW_LIMITED_MOVE = 0x10000000, DOMAIN_DISALLOW_RENAME = 0x8000000, DOMAIN_DISALLOW_MOVE = 0x4000000, DISALLOW_MOVE_ON_DELETE = 0x2000000, ATTR_IS_RDN = 0x20, SCHEMA_BASE_OBJECT = 0x10, ATTR_IS_OPERATIONAL = 0x8, ATTR_IS_CONSTRUCTED = 0x4, PARTIAL_SET_MEMBER = 0x2, NOT_REPLICATED = 0x1 } '@ } $codeBlock= New-LdapAttributeTransformDefinition -SupportedAttributes @('systemFlags') $codeBlock.OnLoad = { param( [string[]]$Values ) Process { foreach($Value in $Values) { [SystemFlags].GetEnumValues().ForEach({if(($Value -band $_) -eq $_) {$_}}) } } } $codeBlock.OnSave = { param( [SystemFlags[]]$Values ) Process { $retVal = 0 $Values.ForEach({ $retVal = $retVal -bor $_}) [BitConverter]::ToInt32([BitConverter]::GetBytes($retVal),0) } } $codeBlock |