none
Uso de select-string. RRS feed

  • Pregunta

  • Hola mi duda, como pongo en el título, tiene que ver con el uso del comando select-string. Al obtener la lista ACL de un cierto fichero obtengo una cadena del tipo siguiente

    Path   : fhdgwergsgsdgsd
    Owner  : sdgsdfsdfdsgsggds
    Group  : sdgsgsgsdgs
    Access : ruta Allow  FullControl
             ruta Users Allow  FullControl
             ruta Allow  FullControl
    Audit  : sdgsgsdgsdgsgs
    Sddl   : dfsggdsgsgdssgsgsgsg

    donde evidentemente he escrito letras al azar en los campos que no son relevantes para esta pregunta. El asunto es que lo único que quiero es lo que viene en el campo Access (con todas las líneas), es decir, quiero obtener la cadena 

    Access : ruta Allow  FullControl
             ruta Users Allow  FullControl
             ruta Allow  FullControl

    pero no lo consigo con el comando select-string. He utilizado la siguiente instrucción

    select-string -InputObject $aclList -pattern 'Access :[.]*' -casesensitive

    aunque se que esta instrucción no me devolvería exactamente lo que quiero pero al menos debería quitarme todo lo que hay antes de Access y sin embargo el comando me devuelve la cadena entera.  No entiendo por qué me devuelve todo, pienso que debería devolverme exactamente la parte de la cadena que coincide con el patrón. ¿Alguien me podría ayudar con esto? No pido que me den el código tal cuál para hacer esto, simplemente que me deis alguna indicación o pista de en qué me estoy equivocando y unas directrices generales de qué debería hacer para conseguir realizar esta tarea. Gracias.

    viernes, 29 de noviembre de 2019 13:04

Todas las respuestas

  • Hola,

    ¿Y porqué quieres sacar el valor mediante select-string cuando (si no me equivoco) lo que tienes es un objeto al que si le pides el valor de la propiedad "Access" te devolverá lo que buscas?

    Por ejemplo:

    Clear-Host
    $aclList= Get-Acl -Path 'c:\temp'
    $aclList.Access | Select IdentityReference, AccessControlType, FileSystemRights | Format-table

    Te devolvería:

    IdentityReference                    AccessControlType            FileSystemRights
    -----------------                    -----------------            ----------------
    BUILTIN\Administradores                          Allow                 FullControl
    NT AUTHORITY\SYSTEM                              Allow                 FullControl
    BUILTIN\Usuarios                                 Allow ReadAndExecute, Synchronize
    NT AUTHORITY\Usuarios autentificados             Allow         Modify, Synchronize

    Aunque no te resuelvo tu problema con select-string espero que esto te sirva.

    Un saludo.

    Diego

    viernes, 29 de noviembre de 2019 14:36
  • Sí que me ha servido, muchas gracias. Lo que no se es como hacer que en la tabla me aparezcan las columnas bien colocadas. Lo que hago con esa información es escribirla en un archivo excel y al escribirla me aparecen las columnas como te aparecen a ti en el anterior mensaje. Gracias.
    lunes, 2 de diciembre de 2019 13:12
  • Hola,

    El | Format-Table cambialo por lo que necesites. Ese formato es para visualizar en pantalla.

    Tienes opciones para exportar a csv, etc. o incluso con módulos powershell directamente a fichero excel sin necesidad de hacer ningún tipo de conversiones.

    Un saludo.

    Diego

    martes, 3 de diciembre de 2019 11:59