En Microsoft Identity Manager (MIM) 2016, las funciones permiten modificar los valores de atributo antes de fluir a un destino en una actividad de función o aprovisionamiento declarativo. El objetivo de este documento es proporcionarle información general sobre las funciones disponibles y una descripción de cómo puede usarlas.
La configuración de asignaciones de flujo de atributos es una tarea elemental al configurar reglas de sincronización. La forma más sencilla de una asignación de flujo de atributo es una asignación directa. Como se indica con el nombre, una asignación directa toma el valor de un atributo de origen y la aplica al atributo de destino configurado. Hay casos en los que se necesitan que los valores de atributo existentes se modifiquen o se calculen nuevos valores de atributo antes de que el sistema los aplique a un destino.
Las funciones son un método integrado que se usa para definir el tipo de modificación que necesita que se aplique el motor de sincronización al generar un valor de atributo para un destino.
Las funciones de MIM se distribuyen en las siguientes categorías:
Manipulación de datos: realice diversas operaciones de manipulación en cadenas.
Recuperación de datos: extraiga datos de valores de atributo.
Generación de datos: genere valores.
Lógica: realice operaciones basadas en condiciones.
En las secciones siguientes se proporcionan más detalles sobre las funciones de cada categoría.
Funciones de manipulación de datos
Las funciones de manipulación de datos se usan para realizar diversas operaciones de manipulación en cadenas.
Concatenar |
Detalle |
Descripción |
La función Concatenar concatena dos o más cadenas. |
Signatura de función |
string1 + string2... |
Entradas |
Dos o más cadenas. |
Operaciones |
Todos los parámetros de cadena de entrada se concatenan entre sí. |
Salida |
Una cadena. |
Mayúsculo |
Detalle |
Descripción |
La función UpperCase convierte todos los caracteres de una cadena en mayúsculas. |
Signatura de función |
String UpperCase(string) |
Entradas |
Una cadena. |
Operaciones |
Todos los caracteres en minúsculas del parámetro de entrada se convierten en caracteres mayúsculas. Por ejemplo: UpperCase("test") da como resultado "TEST" . |
Salida |
Una cadena. |
Minúscula |
Detalle |
Descripción |
La función LowerCase convierte todos los caracteres de una cadena en minúsculas. |
Signatura de función |
String LowerCase(string) |
Entradas |
Una cadena. |
Operaciones |
Todos los caracteres mayúsculas del parámetro de entrada se convierten en caracteres en minúsculas. Por ejemplo: LowerCase("TeSt") da como resultado "test" . |
Salida |
Una cadena. |
ProperCase |
Detalle |
Descripción |
La función ProperCase convierte el primer carácter de cada palabra delimitada por espacio en una cadena en mayúsculas. Todos los demás caracteres se convierten en minúsculas. |
Signatura de función |
String ProperCase(string) |
Entradas |
Una cadena. |
Operaciones |
El primer carácter de cada palabra delimitada por espacio en el parámetro de entrada se convierte en mayúsculas. Todos los caracteres mayúsculas se convierten en caracteres en minúsculas. Si una palabra del parámetro de entrada comienza con un carácter que no es alfabético, el primer carácter de la palabra no se convierte en mayúsculas. Por ejemplo:-
ProperCase("TEsT") da como resultado "Test" . -
ProperCase("britta simon") da como resultado "Britta Simon" . -
ProperCase(" TEsT") da como resultado " Test" . -
ProperCase("\$TEsT") da como resultado "\$Test" .
|
Salida |
Una cadena. |
LTrim |
Detalle |
Descripción |
La función LTrim quita los espacios en blanco iniciales de una cadena. |
Signatura de función |
String LTrim(string) |
Entradas |
Una cadena. |
Operaciones |
Se quitan los caracteres de espacio en blanco iniciales contenidos en el parámetro de entrada. Por ejemplo: LTrim(" Test ") da como resultado "Test " . |
Salida |
Una cadena. |
RTrim |
Detalle |
Descripción |
La función RTrim quita los espacios en blanco finales de una cadena. |
Signatura de función |
String RTrim(string) |
Entradas |
Una cadena. |
Operaciones |
Se quitan los caracteres finales de espacio en blanco contenidos en el parámetro de entrada. Por ejemplo: RTrim(" Test ") da como resultado " Test" . |
Salida |
Una cadena. |
Recortar |
Detalle |
Descripción |
La función Trim quita los espacios en blanco iniciales y finales de una cadena. |
Signatura de función |
String Trim(string) |
Entradas |
Una cadena. |
Operaciones |
Se quitan los caracteres de espacio en blanco iniciales y finales contenidos en la cadena. Por ejemplo: Trim(" Test ") da como resultado "Test" . |
Salida |
Una cadena. |
|
|
RightPad |
Detalle |
Descripción |
La función RightPad rellena una cadena a una longitud especificada mediante un carácter de relleno proporcionado. |
Signatura de función |
String RightPad(string, length, padCharacter) |
Entradas |
-
cadena: cadena que se va a rellenar.
-
longitud: un entero que representa la longitud deseada de la cadena.
-
padCharacter: una cadena que consta de un solo carácter que se va a usar como carácter de relleno.
|
Operaciones |
Si la longitud de cadena es menor que longitud, el padCharacter se anexa repetidamente al final de cadena hasta que la cadena de longitud es igual a longitud. Por ejemplo:-
RightPad("User", 10, "0") da como resultado "User000000" . -
RightPad(RandomNum(1,10), 5, "0") podría dar lugar a "9000" .
|
Salida |
Si cadena tiene una longitud mayor o igual que longitud, se devuelve una cadena idéntica a cadena. Si la longitud de cadena es menor que longitud, se devuelve una nueva cadena de la longitud deseada. La nueva cadena contiene cadena rellenado con un padCharacter. Si cadena es null, la función devuelve una cadena vacía.
Nota: padCharacter puede ser un carácter de espacio, pero no puede ser un valor NULL. Si la longitud de cadena es igual o mayor que longitud, se devuelve cadena sin cambios. |
LeftPad |
Detalle |
Descripción |
La función LeftPad rellena una cadena a una longitud especificada mediante un carácter de relleno proporcionado. |
Signatura de función |
String LeftPad(string, length, padCharacter) |
Entradas |
-
cadena: cadena que se va a rellenar.
-
longitud: un entero que representa la longitud deseada de la cadena.
-
padCharacter: una cadena que consta de un solo carácter que se va a usar como carácter de relleno.
|
Operaciones |
Si la longitud de cadena es menor que longitud, el padCharacter se anexa repetidamente al principio de cadena hasta que la cadena de longitud es igual a longitud. Por ejemplo:-
RightPad("User", 10, "0") da como resultado "000000User" . -
RightPad(RandomNum(1,10), 5, "0") podría dar lugar a "0009" .
|
Salida |
Si cadena tiene una longitud mayor o igual que longitud, se devuelve una cadena idéntica a cadena. Si la longitud de cadena es menor que longitud, se devuelve una nueva cadena de la longitud deseada. La nueva cadena contiene cadena rellenado con un padCharacter. Si cadena es null, la función devuelve una cadena vacía.
Nota: padCharacter puede ser un carácter de espacio, pero no puede ser un valor NULL. Si la longitud de cadena es igual o mayor que longitud, se devuelve cadena sin cambios. |
BitOr |
Detalle |
Descripción |
La función BitOr establece un bit especificado en una marca en 1. |
Signatura de función |
Int BitOr(mask, flag) |
Entradas |
-
máscara: valor hexadecimal que especifica el bit que se va a establecer en la marca .
-
marca: valor hexadecimal que se va a modificar un bit específico.
|
Operaciones |
Esta función convierte ambos parámetros en representación binaria y los compara:- Establece un bit en 1 si uno o ambos de los bits correspondientes de máscara y marca son 1.
- Establece un bit en 0 si ambos bits correspondientes son 0.
- Devuelve 1 en todos los casos, excepto cuando los bits correspondientes de ambos parámetros son 0.
- El patrón de bits resultante es los bits "set" (1 o true) de cualquiera de los dos operandos.
- Se pueden establecer varias marcas de bits si varios bits tienen el valor 1 en máscara.
|
Salida |
Nueva versión de marca con los bits especificados en máscara establecido en 1. |
BitAnd |
Detalle |
Descripción |
La función BitAnd establece un bit especificado en una marca en 0. |
Signatura de función |
Int BitOr(mask, flag) |
Entradas |
-
máscara: valor hexadecimal que especifica el bit que se va a modificar en la marca .
-
marca: valor hexadecimal que se va a modificar un bit específico.
|
Operaciones |
Esta función convierte ambos parámetros en representación binaria y los compara:- Establece un bit en 0 si uno o ambos de los bits correspondientes de máscara y marca son 0.
- Establece un bit en 1 si ambos bits correspondientes son 1.
- Devuelve 0 en todos los casos, excepto cuando los bits correspondientes de ambos parámetros son 1.
- Se pueden establecer varias marcas de bits en 0 si varios bits tienen el valor 0 en máscara.
|
Salida |
Nueva versión de marca con los bits especificados en máscara establecido en 0. |
DateTimeFormat |
Detalle |
Descripción |
La función DateTimeFormat se usa para dar formato a dateTime en forma de cadena a un formato especificado. |
Signatura de función |
String DateTimeFormat(dateTime, format) |
Entradas |
-
dateTime: una cadena que representa la fecha y hora a la que se va a dar formato.
-
formato: una cadena que representa el formato al que se va a convertir.
Nota: para los caracteres que se aceptan para crear formatos definidos por el usuario, vea formatos de fecha y hora definidos por el usuario. |
Operaciones |
La cadena de formato especificada en formato se aplica a DateTime en la cadena dateTime dateTime. La cadena especificada en formato debe ser un formato DateTime válido. Si no es así, se devuelve un error que indica que el formato no es un formato DateTime válido. Por ejemplo: DateTime("12/25/2007", "yyyy-MM-dd") da como resultado "2007-12-25" . |
Salida |
Cadena resultante de aplicar de formato de a dateTime. |
ConvertSidToString |
Detalle |
Descripción |
ConvertSidToString convierte una matriz de bytes que contiene un identificador de seguridad en una cadena. |
Signatura de función |
String ConvertSidToString(ObjectSID) |
Entradas |
ObjectSID: matriz de bytes que contiene un identificador de seguridad (SID). |
Operaciones |
El SID binario especificado se convierte en una cadena. |
Salida |
Representación de cadena del SID. |
ConvertStringToGuid |
Detalle |
Descripción |
La función ConvertStringToGuid convierte la representación de cadena de un GUID en una representación binaria del GUID. |
Signatura de función |
Byte[] ConvertStringToGuid(stringGuid) |
Entradas |
stringGuid: una cadena con formato en el patrón xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx , donde el valor del GUID se representa como una serie de dígitos hexadecimales en grupos de 8, 4, 4, 4 y 12 dígitos y separados por guiones. Un ejemplo de un valor devuelto es 382c74c3-721d-4f34-80e557657b6cbc27 . |
Operaciones |
El stringGuid se convierte en su representación binaria. Si la cadena no es una representación de un GUID válido, la función rechaza el argumento con el error "El parámetro de la función ConvertStringToGuid debe ser una cadena que represente un Guid válido". |
Salida |
Representación binaria del GUID. |
ReplaceString |
Detalle |
Descripción |
La función ReplaceString reemplaza todas las apariciones de una cadena a otra cadena. |
Signatura de función |
String ReplaceString(string, OldValue, NewValue) |
Entradas |
-
cadena: cadena en la que se van a reemplazar los valores.
-
OldValue: cadena que se va a buscar y reemplazar.
-
NewValue: cadena a la que se va a reemplazar.
|
Operaciones |
Todas las apariciones de OldValue en la cadena de se reemplazan por NewValue. La función debe poder controlar los caracteres especiales \n. nueva línea, \r. retorno de carro y pestaña \t.. Por ejemplo: ReplaceString("One\n\rMicrosoft\n\r\Way","\n\r"," ") devuelve "One Microsoft Way" . |
Salida |
Cadena con todas las apariciones de OldValue en la cadena reemplazada por NewValue. |
Funciones de recuperación de datos
Las funciones de recuperación de datos se usan para realizar operaciones que recuperan los caracteres deseados de una cadena.
Palabra |
Detalle |
Descripción |
: la función Word devuelve una palabra incluida en una cadena, según los parámetros que describen los delimitadores que se usarán y el número de palabras que se devolverán. |
Signatura de función |
String Word(string, number, delimiters) |
Entradas |
-
cadena: cadena de la que se va a devolver una palabra.
-
número: número que identifica qué número de palabra se debe devolver.
-
delimitadores: una cadena que representa los delimitadores que se deben usar para identificar palabras.
|
Operaciones |
Cada cadena de caracteres de la cadena separada por uno de los caracteres de delimitadores se identifica como una palabra. Si cadena es null, la función devuelve una cadena vacía. Se devuelve la palabra que se encontró en la posición especificada en número. Si número< 1, la función devuelve una cadena vacía. Por ejemplo:-
Word("Test;of%function;", 3, ";$&%") devuelve "function" . -
Word("Test;;Function" , 2 , ";") devuelve "" (una cadena vacía). -
Word("Test;of%function;", 0, ";$&%") devuelve "" (una cadena vacía).
|
Salida |
Cadena que contiene la palabra en la posición que solicitó el usuario. Si cadena contiene menos de número de palabras, o cadena no contiene ninguna palabra identificada por delimitadores, se devuelve una cadena vacía. |
Izquierda |
Detalle |
Descripción |
La función Left devuelve un número especificado de caracteres de la izquierda (principio) de una cadena. |
Signatura de función |
String Left(string, numChars) |
Entradas |
-
cadena: cadena de la que se van a devolver caracteres.
-
numChars: número que identifica el número de caracteres que se van a devolver desde el principio de una cadena.
|
Operaciones |
numChars caracteres se devuelven desde la primera posición de la cadena . Por ejemplo: Left("Britta Simon", 3) devuelve "Bri" . |
Salida |
Cadena que contiene los primeros caracteres de numChars en la cadena de . Si numChars = 0, la función devuelve una cadena vacía. Si numChars< 0, la función devuelve una cadena de entrada. Si cadena es null, la función devuelve una cadena vacía. |
Derecha |
Detalle |
Descripción |
la función Right devuelve un número especificado de caracteres desde la derecha (final) de una cadena. |
Signatura de función |
String Right(string, numChars) |
Entradas |
-
cadena: cadena de la que se van a devolver caracteres.
-
numChars: un número que identifica el número de caracteres que se van a devolver desde el final de una cadena.
|
Operaciones |
Devuelve numChars caracteres desde el final de la cadena de . Por ejemplo: Right("Britta Simon", 3) devuelve "mon" . |
Salida |
Cadena que contiene los últimos caracteres de numChars de la cadena . Si numChars = 0, la función devuelve una cadena vacía. Si numChars< 0, la función devuelve una cadena de entrada. Si cadena es null, la función devuelve una cadena vacía. Si cadena contiene menos caracteres que el número especificado en numChars, se devuelve cadena. |
Medio |
Detalle |
Descripción |
la función Mid devuelve un número especificado de caracteres desde una posición especificada en una cadena. |
Signatura de función |
String Mid(string, pos, numChars) |
Entradas |
-
cadena: cadena de la que se van a devolver caracteres.
-
pos: número que identifica la posición inicial en una cadena para devolver caracteres.
-
numChars: número que identifica el número de caracteres que se van a devolver de una posición en la cadena.
|
Operaciones |
Devuelve numChars caracteres a partir de la posición pos en la cadena de . Por ejemplo: Mid("Britta Simon", 3, 5) devuelve "itta " . |
Salida |
Cadena que contiene caracteres numChars de posición pos en la cadena de . Si numChars = 0, la función devuelve una cadena vacía. Si numChars< 0, la función devuelve una cadena vacía. Si pos> la longitud de cadena, la función devuelve una cadena de entrada. Si pos<= 0, la función devuelve una cadena de entrada. Si cadena es null, la función devuelve una cadena vacía. Si no hay ningún numChar caracteres restantes en cadena desde la posición pos, se devuelven tantos caracteres como sea posible. |
Funciones de generación de datos
Las funciones de generación de datos se usan para generar valores para tipos de datos específicos.
CRLF |
Detalle |
Descripción |
La función CRLF genera un retorno de carro/avance de línea. Use esta función para agregar una nueva línea. |
Signatura de función |
String CRLF |
Entradas |
Ninguno. |
Operaciones |
Se devuelve un CRLF. Por ejemplo:
AddressLine1 + CRLF() + AddressLine2 da como resultado AddressLine1
AddressLine2 . |
Salida |
Una CRLF es la salida. |
RandomNum |
Detalle |
Descripción |
La función RandomNum devuelve un número aleatorio dentro de un intervalo especificado. |
Signatura de función |
Int RandomNum(start, end) |
Entradas |
-
iniciar: número que identifica el límite inferior del valor aleatorio que se va a generar.
-
final: número que identifica el límite superior del valor aleatorio que se va a generar.
|
Operaciones |
Se genera un número aleatorio mayor o igual que iniciar y menor o igual que final. Por ejemplo: Random(0,999) podría devolver 100 . |
Salida |
Número aleatorio dentro del intervalo especificado por iniciar y finalizar. |
EscapeDNComponent |
Detalle |
Descripción |
El método EscapeDNComponent de MIISUtils se usa para realizar esta operación. Este método procesa la cadena de entrada en función del tipo de agente de administración (MA) que se usa. |
Signatura de función |
String EscapeDNComponent(string) |
Entradas |
cadena: una cadena que se usa para procesar un nombre distintivo. La cadena no debe contener caracteres de escape. |
Operaciones |
Las distintas ENTIDADES de certificación requieren diferentes formatos de nombre distintivos. Este método procesa la cadena de entrada en función de los siguientes tipos de MA:-
nombre distintivo LDAP: entre los ejemplos de este tipo de MA se incluyen Active Directory Domain Services, Sun Directory Server (anteriormente iPlanet Directory Server) y Microsoft Exchange Server.
- Los caracteres XML no válidos de la parte de valor de una parte determinada están codificados hexadecimalmente.
- Los caracteres no válidos (incluidos los caracteres XML no válidos) en la parte de nombre de una parte determinada generan un error.
- Los caracteres de escape incluyen comas (,), iguales (=), más (+), menor que (<), mayor que (>), número (#), punto y coma (;), barra diagonal inversa () y comillas dobles (").
- Si el último carácter de la cadena es un espacio ( ), ese espacio se escapa.
- Se quitan los espacios iniciales o finales extraños alrededor de un nombre de pieza.
- Para la MA XML, si hay varias partes, las partes se ordena alfabéticamente.
- Si se especifican varias partes, la cadena de nombre distintivo compuesta es la concatenación de las cadenas individuales separadas por signos más (+).
- Se genera un error si la cadena de entrada no es una cadena de nombre distintivo de estilo LDAP bien formada.
-
jerárquicos que no son LDAP: un ejemplo de este tipo de MA es Microsoft Lotus Notes.
- Este tipo de MA no admite componentes de varias partes.
- Si se pasan varias cadenas a
EscapeDNComponent , se produce un argumentException. - Si alguno de los caracteres de la cadena de entrada son caracteres XML no válidos, se produce un argumentException.
- Todas las comas (,) y las barras diagonales inversas (/) de la cadena de entrada se escapen.
- Si el último carácter de la cadena es un espacio ( ), ese espacio se escapa.
-
extrinsic: algunos ejemplos de este tipo de MA incluyen bases de datos o XML sin un nombre distintivo LDAP.
- Si algún elemento es binario o contiene un carácter XML no válido, ese elemento se almacena como una versión codificada hexadecimal de los datos sin procesar con un carácter numérico (#) prefijo en la parte frontal de la cadena. Por ejemplo, si una parte se
AxC (donde x representa un carácter XML no válido, como 0x10 ), esa parte se codifica como #410010004300 . De lo contrario, todas las instancias de estos caracteres se escapen: barra diagonal inversa (), coma (,), más (+) y número (#). - Si el último carácter de una cadena de pieza determinada es un espacio ( ), ese espacio se escapa.
- Si se especifican varias partes, la cadena de nombre distintivo compuesta es la concatenación de todas las cadenas individuales separadas por signos más.
|
Salida |
Cadena que contiene un nombre de dominio válido. |
Nota:
La validación de nombres distintivos es menos estricta que la sintaxis definida en las especificaciones LDAP.
EscapeDNComponent(String[])
permite que un nombre de pieza contenga cualquier combinación de uno o varios de los caracteres 'a'-'z', 'A'-'Z', '0'-'9', '-' y '.'.
No es posible especificar una parte binaria con este método. Sin embargo, es posible tener una parte binaria en CommitNewConnector si el nombre distintivo se construye a partir de atributos de delimitador y uno de los atributos de anclaje es un tipo binario.
Nulo |
Detalle |
Descripción |
La función Null se usa para especificar que la MA no tiene un atributo para contribuir, y esa precedencia de atributo debe continuar con la siguiente ma. |
Signatura de función |
String Null |
Entradas |
Ninguno. |
Operaciones |
Se devuelve un valor Null. Por ejemplo: IIF(Eq(domain), "unknown", Null()) devuelve Null . |
Salida |
Se genera un valor NULL. |
Funciones lógicas
Las funciones lógicas se usan para realizar una operación en función de las condiciones evaluadas por el sistema.
IIF |
Detalle |
Descripción |
: la función IIF devuelve uno de un conjunto de valores posibles según una condición especificada. |
Signatura de función |
Object IIF(condition, valueIfTrue, valueIfFalse) |
Entradas |
-
condición: cualquier valor o expresión que se pueda evaluar como true o false. Las siguientes funciones están disponibles para su uso como expresiones en la función IIF para la condición de :
-
Eq: esta función compara dos argumentos para la igualdad.
-
NotEquals: esta función compara dos argumentos para la desigualdad, devolviendo true si no son iguales y false si son iguales. Por ejemplo:
NotEquals(EmployeeType, "Contractor") . -
LessThan: esta función compara dos números, devolviendo true si el primero es menor que el segundo y false de lo contrario. Por ejemplo:
LessThan(Salary, 100000) . -
GreaterThan: esta función compara dos números, devolviendo true si el primero es mayor que el segundo y false de lo contrario. Por ejemplo:
GreaterThan(Salary, 100000) . -
LessThanOrEquals: esta función compara dos números, devolviendo true si el primero es menor o igual que el segundo y false de lo contrario. Por ejemplo:
LessThanOrEquals(Salary, 100000) . -
GreaterThanOrEquals: esta función compara dos números, devolviendo true si el primero es mayor o es igual que el segundo y false de lo contrario. Por ejemplo:
GreaterThanOrEquals(Salary, 100000) . -
IsPresent: esta función toma como entrada un atributo en el esquema ILM y devuelve true si el atributo no es null y false si el atributo es null.
-
valueIfTrue: valor que se devuelve si la condición se evalúa como true.
-
valueIfFalse: valor que se devuelve si la condición se evalúa como false.
|
Operaciones |
Si condición se evalúa como true, la función devuelve valueIfTrue. De lo contrario, la función devuelve valueIfFalse. Por ejemplo: IIF(Eq(EmployeeType,"Intern"),"t-" + Alias, Alias) devuelve el alias de un usuario con "t-" agregado al principio del alias si el usuario es un interno. De lo contrario, la función devuelve el alias del usuario as-is. |
Salida |
La salida es valueIfTrue si la condición es true o valueIfFalse si la condición es false. |