none
Enviar Informacion a Un Archivo RRS feed

  • Pregunta

  • Buenas Tardes soy nuevo en esto de PowerShell y tengo una preguntas

    genere mediante DSQuery los equipos de computo que tengan mas de tres semanas inactivos de una determinada OU pero esa informacion me la quiero llevar a un archivo y no se como esto es lo que llevo hasta el momento.

    PS c:\ dsquery  computer  "OU=CesarActivos,DS=empresa,DS=com" -limit 0  -inactive 3|dsget -samid>c:\Inactivos.csv

    pero esto me envia un error  saludos y gracias

    lunes, 10 de diciembre de 2012 23:04

Respuestas

  • No sé cuál será la solución que encontró. Yo he encontrado esta. Por cierto, de entrada, el comando dsget tiene el error de que no especifica computer.

    Primero, no es necesario el uso de Powershell para lanzar esos comandos, ya que están pensados para CMD; Powershell lo único que hace es provocar un error por realizar el encaminamiento de otra manera, con lo que hay que cambiar el comando a esto para que funcione:

     dsquery  computer  "OU=CesarActivos,DS=empresa,DS=com" -limit 0  -inactive 3 | ForEach{dsget computer $_ -samid} >c:\Inactivos.csv

    ¿Para qué añadir esta complejidad si tanto dsquery como dsget no son comandos de Powershell, si no ejecutables pensados para usarse desde ventana de comando? Por cierto, que además desde ventana de comandos no da error la línea expresada (salvo que en el ejemplo que pone falta especificar computer en el dsget), con lo que desde ventana de comandos sí que es así:

     dsquery  computer  "OU=CesarActivos,DS=empresa,DS=com" -limit 0  -inactive 3|dsget computer -samid>c:\Inactivos.csv

    Por si esto no es bastante, el resultado al lanzarlo con Powershell, por culpa de haber tenido que usar ForEach, es un listado muy sucio:

      samid        
      equipo1$  
    dsget correcto
      samid      
      equipo2$  
    dsget correcto
      samid     
      DESWSUS$  
    dsget correcto
      samid        
      equipoN$  
    dsget correcto

    Sin embargo al lanzarlo desde CMD el resultado es mucho más limpio:

      samid             
      equipo1$       
      equipo2$         
      equipoN$          
    dsget correcto
    

    Por otro lado, si tan sólo se necesita un listado de los nombres sAMAccountName de los equipos ¿para qué encaminar el resultado de dsquery computer a dsget, si dsquery computer lo puede hacer directamente?:

    dsquery  computer  "OU=CesarActivos,DS=empresa,DS=com" -limit 0  -inactive 3 -o samid > c:\Inactivos.csv

    Haciéndolo así se consigue la lista sin el samid inicial ni el dsget correcto final, queda la lista de equipos sin más (eso sí, encerrados los nombres entre comillas), lo cual me parece un listado mucho más limpio que los dos anteriores, (sobre todo que en el caso de Powershell):

    "equipo1"
    "equipo2"
    "equipoN"

    Resumiendo:

    • El comando tiene el error de que en dsget falta computer.
    • Si es con Powershell, no se puede encaminar directamente la salida de dsquery a dsget, es necesario hacerlo por medio de un ForEach; esto provoca que dsget haga un listado independiente por cada equipo, lo que ensucia sobremanera el listado final.
    • Si sólo se desea un listado de sAMAccountName de equipos, no es necesario dsget, con dsquery es bastante y es además la mejor opción.
    • ¿Seguro que Powershell es la mejor elección para esto? Es mejor CMD, Powershell sólo estaría justificado si se estuviese desarrollando un script Powershell que usase el fichero resultante. (indicar que esto es sólo si no nos sentimos cómodos con las formas de obtener el listado que hay en Powershell y que no requieren el uso de dsquery y dsget).

    Un saludo

    Fernando Reyes [MS MVP]
    MCSA 2000/2003
    MCSE 2000/2003
    MCITP EnterpriseAdministrator
    Web: http://freyes.svetlian.com
    Blog: http://urpiano.wordpress.com
    RSS: http://urpiano.wordpress.com/feed/
    freyes.champú@champú.mvps.org
    (Aclárate la cabeza si quieres escribirme)

    • Marcado como respuesta Uriel Almendra lunes, 25 de marzo de 2013 23:58
    martes, 19 de marzo de 2013 11:22
    Moderador

Todas las respuestas

  • ya encontre la solucion

    gracias

    viernes, 14 de diciembre de 2012 18:09
  • ya encontre la solucion

    gracias

    viernes, 14 de diciembre de 2012 18:09
  • Hola César y gracias por utilizar los foros, podrías compartir tu solución para que otros usuarios con el mismo problema la puedan aplicar, saludos.

    Si esta u otra respuesta te fue de utilidad, no olvides proponerla o marcarla como respuesta, así otros usuarios podrán utilizarla y ayudaras a que nuestra comunidad siga creciendo.


    miércoles, 6 de marzo de 2013 20:49
  • No sé cuál será la solución que encontró. Yo he encontrado esta. Por cierto, de entrada, el comando dsget tiene el error de que no especifica computer.

    Primero, no es necesario el uso de Powershell para lanzar esos comandos, ya que están pensados para CMD; Powershell lo único que hace es provocar un error por realizar el encaminamiento de otra manera, con lo que hay que cambiar el comando a esto para que funcione:

     dsquery  computer  "OU=CesarActivos,DS=empresa,DS=com" -limit 0  -inactive 3 | ForEach{dsget computer $_ -samid} >c:\Inactivos.csv

    ¿Para qué añadir esta complejidad si tanto dsquery como dsget no son comandos de Powershell, si no ejecutables pensados para usarse desde ventana de comando? Por cierto, que además desde ventana de comandos no da error la línea expresada (salvo que en el ejemplo que pone falta especificar computer en el dsget), con lo que desde ventana de comandos sí que es así:

     dsquery  computer  "OU=CesarActivos,DS=empresa,DS=com" -limit 0  -inactive 3|dsget computer -samid>c:\Inactivos.csv

    Por si esto no es bastante, el resultado al lanzarlo con Powershell, por culpa de haber tenido que usar ForEach, es un listado muy sucio:

      samid        
      equipo1$  
    dsget correcto
      samid      
      equipo2$  
    dsget correcto
      samid     
      DESWSUS$  
    dsget correcto
      samid        
      equipoN$  
    dsget correcto

    Sin embargo al lanzarlo desde CMD el resultado es mucho más limpio:

      samid             
      equipo1$       
      equipo2$         
      equipoN$          
    dsget correcto
    

    Por otro lado, si tan sólo se necesita un listado de los nombres sAMAccountName de los equipos ¿para qué encaminar el resultado de dsquery computer a dsget, si dsquery computer lo puede hacer directamente?:

    dsquery  computer  "OU=CesarActivos,DS=empresa,DS=com" -limit 0  -inactive 3 -o samid > c:\Inactivos.csv

    Haciéndolo así se consigue la lista sin el samid inicial ni el dsget correcto final, queda la lista de equipos sin más (eso sí, encerrados los nombres entre comillas), lo cual me parece un listado mucho más limpio que los dos anteriores, (sobre todo que en el caso de Powershell):

    "equipo1"
    "equipo2"
    "equipoN"

    Resumiendo:

    • El comando tiene el error de que en dsget falta computer.
    • Si es con Powershell, no se puede encaminar directamente la salida de dsquery a dsget, es necesario hacerlo por medio de un ForEach; esto provoca que dsget haga un listado independiente por cada equipo, lo que ensucia sobremanera el listado final.
    • Si sólo se desea un listado de sAMAccountName de equipos, no es necesario dsget, con dsquery es bastante y es además la mejor opción.
    • ¿Seguro que Powershell es la mejor elección para esto? Es mejor CMD, Powershell sólo estaría justificado si se estuviese desarrollando un script Powershell que usase el fichero resultante. (indicar que esto es sólo si no nos sentimos cómodos con las formas de obtener el listado que hay en Powershell y que no requieren el uso de dsquery y dsget).

    Un saludo

    Fernando Reyes [MS MVP]
    MCSA 2000/2003
    MCSE 2000/2003
    MCITP EnterpriseAdministrator
    Web: http://freyes.svetlian.com
    Blog: http://urpiano.wordpress.com
    RSS: http://urpiano.wordpress.com/feed/
    freyes.champú@champú.mvps.org
    (Aclárate la cabeza si quieres escribirme)

    • Marcado como respuesta Uriel Almendra lunes, 25 de marzo de 2013 23:58
    martes, 19 de marzo de 2013 11:22
    Moderador
  • Muchas gracias Fernando, muy amable.

    Recuerda proponer o marcar toda respuesta que haya solucionado tu consulta, votar como útil o agradecer


    Uriel Almendra
    Microsoft Contingent Staff
    Mexico City

    lunes, 25 de marzo de 2013 23:58