PowerShell Regex para validar DOMINIO\nombre de usuario

PowerShell Regex para validar DOMINIO\nombre de usuario

Tengo la siguiente expresión regular para validar los nombres de usuario de Windows en un script de PowerShell.

$fqusername -imatch '^\w+[\\]\w+$'

Esto funciona bien en mi propio entorno, pero planeo lanzarlo para un uso más amplio y quiero asegurarme de que se valide correctamente para otros.

Respuesta1

Bueno, no del todo. Te vas a perder algunas cosas.

Parte del dominio:

\w+coincidencias en caracteres de palabras. lo cual está bien, hasta que la persona no use el nombre NETBIOS sino que use el nombre de dominio (totalmente compatible) para que coincida STACKOVERFLOW\Zypher... pero no STACKOVERFLOW.COM\Zypherporque .descarte la coincidencia.

La parte del usuario:

mientras que Goyuix ha indicado qué personajes no están permitidos. Lo que eso dice implícitamente es que TODOS LOS DEMÁS caracteres ESTÁN permitidos. Un ejemplo muy común de esto son los -personajes. Por lo tanto, usar el guión como ejemplo STACKOVERFLOW\Zypher-SOno coincidiría.

También <user>@<domain>es una notación válida para una cuenta de usuario.

¿Qué estás tratando de lograr? Puede que haya una manera mejor que las expresiones regulares.

Respuesta2

Probablemente estarás de acuerdo con eso, aunque hay un par de cosas que debes tener en cuenta:

Primero, segúnesteEn el artículo de TechNet, la siguiente es una lista de caracteres que no están permitidos en un nombre de usuario. Aquí está en PowerShell:

'( ; : " <> * + = \\ | ? , )' -imatch '\w'

Devuelve falso, por lo que \wdebería estar bien.

En segundo lugar, como posible mejora, podría considerar incluir \wentre paréntesis para permitir la agrupación y la extracción sencilla de la parte del dominio o del nombre de usuario de la coincidencia. Nota: Esto (muy ligeramente) ralentizará la coincidencia y utilizará (muy ligeramente) más memoria.

En tercer lugar, según el artículo de MS KB938447ciertos caracteres se tratan como iguales en nombres de usuario/objetos. Una prueba rápida muestra que PowerShell coincide correctamente con los caracteres mencionados con diéresis que coinciden con su expresión regular, así que tenga cuidado si lo está utilizando para crear cuentas, ya que la cuenta aún puede fallar en casos extraños.

información relacionada