El Blog de Gualtrysoft

Windows 2000/2003/2008, Active Directory, VBScript, Hyper-V, PowerShell y todo aquello interesante a la hora de usar, configurar y administrar Windows Server. También tenemos longanizas…

Archive for the ‘PowerShell’ Category

Tips y Scripts de PowerShell

Powershell Tip: Lanzar ejecutables y recuperar la salida de los mismos

Posted by urpiano en Miércoles 28 \28\UTC mayo \28\UTC 2014

Cuando se lanza un ejecutable desde una consola de Powershell o desde un script de Powershell nos puede interesar recuperar la salida estandar y la de errores para llevarla a una variable. Esto se puede hacer simplemente redirigiendo ambas salidas a un fichero, cargando el fichero y eliminádolo una vez cargado o terminado de operar con él ¿No sería mejor poder obtener ambas salidas de forma directa, sin necesidad de usar ese fichero “de paso”? La respuesta está en dos clases del espacio de nombres .NET System.Diagnostics: ProcessStartInfo y Process. Lee el resto de esta entrada »

Posted in Informatica, PowerShell, Scripting, Tips | Leave a Comment »

Powershell Tip: Un ejemplo de uso de $OFS

Posted by urpiano en Miércoles 27 \27\UTC marzo \27\UTC 2013

En este otro Tip de Powershell, explicaba qué hace esta variable propia de Powershell; ahora voy a poner un ejemplo muy chulo que he hecho en un script en el curro. Lee el resto de esta entrada »

Posted in Informatica, PowerShell, Scripting, Tips | Leave a Comment »

Powershell: Cmdlet para enviar un correo con la información de la última sincronización de los servidores WSUS

Posted by urpiano en Martes 12 \12\UTC febrero \12\UTC 2013

¿Quieres crear una tarea programada que todos los días te informe de qué tal ha ido la sincronización de tus servidores WSUS? Este Cmdlet de Powershell te puede ser útil.

Lee el resto de esta entrada »

Posted in Informatica, PowerShell, Scripting | 1 Comment »

PowerShell Tip: Mostrar el Progreso con Texto en un Bucle

Posted by urpiano en Miércoles 12 \12\UTC diciembre \12\UTC 2012

Al hilo de este anterior Tip, en este otro vamos a ver cómo poder mostrar el progreso en un bucle en el que estamos procesando "algo" y queremos mostrar alguna propiedad de ese "algo" en el momento en que lo estamos procesando, lo que nos permitirá ver en qué objeto estamos en un determinado momento y que el proceso progresa.

Lee el resto de esta entrada »

Posted in Informatica, PowerShell, Scripting, Tips | Leave a Comment »

PowerShell Tip: Mostrar Una Cuenta Hacia Delante o Hacia Detrás

Posted by urpiano en Domingo 2 \02\UTC diciembre \02\UTC 2012

En ocasiones podemos querer que se vaya mostrando un cuenta hacia adelante o hacia detrás en algún script que tengamos. La forma "bonita" de hacer esto es que se vea un texto fijo y un número a su lado que vemos cómo se va incrementando o cómo va decreciendo.

Lee el resto de esta entrada »

Posted in Informatica, PowerShell, Tips | 1 Comment »

PowerShell: Cmdlet Para Importar Contactos de un Exchange de Producción a Otro Exchange de Laboratorio Sin Relación de Confianza Entre Ambos

Posted by urpiano en Viernes 30 \30\UTC noviembre \30\UTC 2012

Este Cmdlet lo he desarrollado como paso previo a un script que he tenido que crear de sincronización de contactos que venían de otras organizaciones de correo. Como quería que en el laboratorio estuviesen los mismos contactos que en producción y además con las mismas propiedades fundamentales (nombres, direcciones de correo y atributos personalizados), desarrollé este Cmdlet para poder, de un plumazo, traer de nuevo los contactos tantas veces fuera necesario, eliminando los que ya hubiera creado con anterioridad y que, por haber realizado cambios en ellos al ejecutar otros scripts, no estuvieran ya igual que en producción.

Lee el resto de esta entrada »

Posted in Exchange, Informatica, PowerShell, Scripting | Leave a Comment »

PowerShell: Cmdlet Para Inventariar con WMI y Obtener Ficheros HTML con los Resultados

Posted by urpiano en Miércoles 28 \28\UTC noviembre \28\UTC 2012

Inspirado por esta pregunta del foro general de scripting de Technet he desarrollado este Cmdlet. Respondí a la persona que preguntaba con este script VbScript. Pensando en la facilidad de PowerShell a la hora de entenderse con WMI, he desarrollado este otro script en PowerShell, que hace lo mismo que el anterior, pero con cualquier clase WMI, no sólo con Win32_Product.

Lee el resto de esta entrada »

Posted in Informatica, PowerShell, Scripting | Leave a Comment »

PowerShell Tip: Saber El Valor Predeterminado De los Parámetros De Un Cmdlet

Posted by urpiano en Miércoles 28 \28\UTC noviembre \28\UTC 2012

Si queremos mirar con la ayuda de un Cmdlet los valores por defecto de sus parámetros, esto lo podemos realizar ejecutando Get-Help -full o, más específicamente, Get-Help -Property * | Format-Table Name,DefaultValue.

Lee el resto de esta entrada »

Posted in Informatica, PowerShell, Scripting, Tips, Uncategorized | Leave a Comment »

PowerShell: Cmdlet para Obtener un Listado de las Membresías de Grupo de Un Usuario

Posted by urpiano en Miércoles 24 \24\UTC octubre \24\UTC 2012

Este Cmdlet permite listar los grupos a los que pertenece un usuario, así como información propia del usuario y del contenedor en el que está albergada su cuenta (OU). Las membresías que se obtienen son:

  • Membresías directas: el usuario es miembro de un grupo y aparece como tal en la lista de la pestaña "Miembros" de las propiedades del grupo.
  • Membresías heredadas: el usuario es miembro de un grupo A que es, a su vez, miembro de un grupo B; esto hace al usuario miembro del grupo B, aunque no aparezca en la lista de la pestaña "Miembros" de las propiedades del grupo B.
  • Membresías por ser el grupo primario del usuario: el usuario tiene como grupo primario (propiedad primaryGroupId) a determinado grupo (de forma predeterminada los usuarios de un dominio pertenecen al grupo "Usuarios del dominio"); en este caso, el usuario tampoco aparece en la lista de la pestaña "Miembros" de las propiedades del grupo que tiene como grupo primario.

Lee el resto de esta entrada »

Posted in Informatica, PowerShell, Scripting | Leave a Comment »

PowerShell: Cmdlet Para Realizar Búsquedas en Active Directory y Obtener los Resultados Como Objetos DirectoryEntry

Posted by urpiano en Domingo 21 \21\UTC octubre \21\UTC 2012

Cuando se utiliza un objeto DirectorySearcher para realizar búsquedas por medio de filtros LDAP, los resultados obtenidos son objetos SearchResult, más incómodos de consultar que los objetos DirectoryEntry. Este Cmdlet en un encapsulamiento del objeto DirectorySearcher que permite usar el mismo filtro LDAP que se usaría con el DirectorySearcher y obtener los mismos resultados, pero como objetos DirectoryEntry.

Lee el resto de esta entrada »

Posted in Informatica, PowerShell, Scripting | 2 Comments »

PowerShell: Cmdlet Para Traducir un Nombre NetBios a Distinguido y Viceversa

Posted by urpiano en Domingo 21 \21\UTC octubre \21\UTC 2012

Esta función recibe como parámetro el nombre NetBios (Dominio\Objeto) de un objeto de Active Directory y devuelve su nombre distinguido (cn=Objeto,OU=OU,DC=dominio,DC=local), o recibe el nombre distinguido y devuelve el NetBios.

Lee el resto de esta entrada »

Posted in Informatica, PowerShell, Scripting | 1 Comment »

PowerShell: Cmdlet Para Obtener Un Objeto DirectoryEntry a Partir de su Ruta LDAP

Posted by urpiano en Domingo 21 \21\UTC octubre \21\UTC 2012

Este Cmdlet recibe como parámetro la ruta LDAP de un objeto de Active Directory y devuelve el objeto DirectoryEntry, cuya ruta LDAP es la recibida. Es un pequeño Cmdlet pensado para facilitar la obtención de objetos DirectoryEntry cuando se tiene su ruta LDAP obtenida por otros objetos, como pueda ser la propiedad Parent de los objetos DirectoryEntry, que es el contenedor en el que están ubicados; esto es muy útil para poder obtener información de la Unidad Organizativa a la que pertenece un objeto.

Lee el resto de esta entrada »

Posted in Informatica, PowerShell, Scripting | 1 Comment »

PowerShell: Cmdlet para Obtener la Cadena SID de un Array SID

Posted by urpiano en Domingo 21 \21\UTC octubre \21\UTC 2012

Cuando consultamos en un objeto DirectoryEntry su propiedad objectSID vemos que se trata de un array de Bytes, no de la típica cadena SID más amigable para el ser humano. Este Cmdlet permite obtener esta cadena SID, lo cual nos hace que, por ejemplo, podamos usar el SID para poder identificar estructuras SID conocidas. Esto resulta muy util cuando se consulta el atributo operacional tokenGroups, que contiene los SIDs de todos los grupos a los que pertenece un usuario, ya sea por membresía directa, heredada o por ser su grupo primario (atributo primaryGroupID).

Lee el resto de esta entrada »

Posted in Informatica, PowerShell, Scripting | 1 Comment »

PowerShell: Cómo Almacenar de Manera Segura una Contraseña y Utilizarla desde un Script

Posted by urpiano en Viernes 20 \20\UTC julio \20\UTC 2012

Un problema típico de los scripts es cuando se necesita poner una contraseña para realizar determinada tarea. Esa contraseña se escribe como texto plano, con lo que cualquiera que tenga acceso al código podrá averiguar cuál es esa contraseña ¿Cómo podemos evitar que esta contraseña sea visible para cualquiera?

Lee el resto de esta entrada »

Posted in Informatica, PowerShell, Scripting, Tips | Leave a Comment »

Exchange 2010 Tip: Administrar con PowerShell desde un equipo sin herramientas de Exchange

Posted by urpiano en Lunes 21 \21\UTC mayo \21\UTC 2012

Gracias a la administración remota incluída con el marco de administración de Windows (incluye PowerShell 2.0 y administración remota de Windows), es posible conectar desde tu equipo con una consola de PowerShell a un servidor de Exchange 2010 y administrarlo, sin tener instaladas las herramientas de administración de Exchange en tu equipo (eso sí, no con la consola de administración GUI, sólo desde PowerShell). Veamos cómo se hace esto.

Lee el resto de esta entrada »

Posted in Exchange, PowerShell, Tips | 7 Comments »

PowerShell: Cmdlets para cambiar el caso en atributos de usuario de Active Directory

Posted by urpiano en Sábado 5 \05\UTC mayo \05\UTC 2012

¿No te gusta cómo están dados de alta los usuarios en Active Directory, en concreto que estén en mayúsculas y los quieres en minúsculas, o viceversa? ¿O te gustaría que estuviesen En Plan Títulos? ¿Quieres poder cambiar esto de un plumazo? Estos Cmdlets que presento aquí te pueden servir de ayuda.

Lee el resto de esta entrada »

Posted in Informatica, PowerShell, Scripting | 3 Comments »

PowerShell Tip: Separación Automática de Arrays – $OFS

Posted by urpiano en Miércoles 25 \25\UTC abril \25\UTC 2012

Una prestación muy cómoda de PowerShell consiste en que puede poner todos los valores de un array de forma automática en una cadena, con los valores separados por espacios ¿Es posible que esto lo haga separando por un tabulador, por ejemplo? Sí, es perfectamente posible y es lo que vamos a ver en este Tip.

Lee el resto de esta entrada »

Posted in Informatica, PowerShell, Scripting, Tips | 3 Comments »

PowerShell Tip: Cómo Enumerar Todas las Propiedades de una Clase de Active Directory

Posted by urpiano en Martes 13 \13\UTC marzo \13\UTC 2012

¿Tenemos curiosidad por saber qué atributos tiene una clase de Active Directory en concreto? ¿Queremos además saber de qué tipo son esos atributos? Con PowerShell esto se puede averiguar.

Lee el resto de esta entrada »

Posted in Informatica, PowerShell, Scripting, Tips, Uncategorized | 1 Comment »

Tip PowerShell: Cómo saber la versión de PowerShell que hay en un equipo

Posted by urpiano en Lunes 27 \27\UTC febrero \27\UTC 2012

¿Queremos saber la versión de PowerShell que está instalada en el equipo? En esta entrada se explica cómo hacerlo.

Lee el resto de esta entrada »

Posted in Informatica, PowerShell, Scripting, Tips | Leave a Comment »

PowerShell: Cmdlet para mostrar la información de una clase de Active directory

Posted by urpiano en Martes 21 \21\UTC febrero \21\UTC 2012

Al hilo de mi entrada anterior PowerShell Tip: Cómo Enumerar Todas las Propiedades de una Clase de Active Directory, he desarrollado este Cmdlet que nos permite pasarle uno o varios nombres de clases de Active Directory y obtener la información respecto a ellas que hay en el esquema.

Lee el resto de esta entrada »

Posted in Informatica, PowerShell, Scripting | 1 Comment »

PowerShell: Cmdlet para listar las conexiones de red de un equipo

Posted by urpiano en Jueves 19 \19\UTC enero \19\UTC 2012

Esta función tiene como devolución los objetos de la clase WMI Win32_NetworkAdapter, agregándole propiedades de la clase WMI Win32_NetworkAdapterConfiguration, lo que permite obtener resultados parecidos (aunque mucho más amplios) al comando IPCONFIG, ya que la información suministrada por este comando junta la información de ambas clases (como si de un Join de SQL se tratara, pues cada instancia de una de ambas clases tiene su correspondiente en la otra) obteniendo así la información de las conexiones de red.

Lee el resto de esta entrada »

Posted in Informatica, PowerShell, Scripting | Leave a Comment »

PowerShell: Cmdlet para obtener los miembros de un grupo

Posted by urpiano en Miércoles 20 \20\UTC julio \20\UTC 2011

Esta función recibe como parámetro el nombre distinguido de un grupo de Active Directory y devuelve los usuarios que pertenecen a dicho grupo. La devolución consiste en objetos DirectoryEntry, lo que permite recorrerla para leer o escribir determinados atributos según necesidades detectadas.

Lee el resto de esta entrada »

Posted in Informatica, PowerShell, Scripting | Leave a Comment »

PowerShell: Obtener los buzones de correo de un servidor Domino

Posted by urpiano en Lunes 25 \25\UTC abril \25\UTC 2011

De la misma manera que se pueden obtener con una consulta LDAP los objetos de un dominio de Active Directory, se pueden obtener los objetos de Domino. En este ejemplo vamos a obtener los buzones de correo de un servidor Domino (objetos de tipo dominoPerson).

Lee el resto de esta entrada »

Posted in Informatica, PowerShell, Scripting, Tips | Leave a Comment »

PowerShell: Usar los Cmdlets de SCVMM 2008 R2 en cualquier consola de PowerShell

Posted by urpiano en Viernes 21 \21\UTC enero \21\UTC 2011

Si queremos utilizar PowerShell para administrar la virtualización vía SCVMM 2008 R2 (System Center Virtual Machine Manager 2008 Release 2) sin abrir la consola que instala SCVMM, que es un archivo .psc1, es decir, un archivo de consola de PowerShell), necesitamos agregar el SnapIn de SCVMM a la consola "normal" de PowerShell. Una vez agregada, podemos querer ver qué Cmdlets son los que agrega este SnapIn. Este Tip versa sobre esto.

Lee el resto de esta entrada »

Posted in Informatica, PowerShell, Tips | 3 Comments »

Devolución de funciones en PowerShell y tipos de datos personalizados

Posted by urpiano en Miércoles 12 \12\UTC enero \12\UTC 2011

En este artículo veremos como se comporta PowerShell a la hora de realizar la devolución de las funciones, ya que no lo hace como los lenguajes de programación “normales”, lo que nos puede llevar a confusión y a obtener resultados inesperados e/o indeseados. A parte de ello, a la hora de crear funciones en PowerShell es muy interesante que éstas no devuelvan simple texto, si no que devuelvan objetos tal y como lo hacen los propios Cmdlets de PowerShell , lo que permite que la devolución sea encaminada a otras funciones o Cmdlets de PowerShell . Así pues, es interesante el poder personalizar los tipos de objetos que se devuelven, ya sea quitando y/o añadiendo propiedades a los objetos obtenidos por otros Cmdlets invocados en la función, calculadas en la función o procedentes de otros objetos, o incluso creando nuevos tipos personalizados para la devolución de las funciones.

http://freyes.svetlian.com/pstipos.htm

Posted in Informatica, PowerShell, Scripting | Leave a Comment »

PowerShell: Cmdlet para obtener información sobre la memoria física de un equipo (2)

Posted by urpiano en Jueves 9 \09\UTC diciembre \09\UTC 2010

Esta función de PowerShell obtiene información sobre la memoria física de un equipo, local o remoto, en base a una consulta WMI a la clase Win32_PhysicalMemory. La función permite recibir el nombre del equipo a mirar por encaminamiento, lo que permite encaminar toda un conjunto de equipos y obtener un listado de memoria física.

Lee el resto de esta entrada »

Posted in Informatica, PowerShell, Scripting | 1 Comment »

PowerShell: Cmdlet para inventariar los procesadores de un equipo

Posted by urpiano en Jueves 9 \09\UTC diciembre \09\UTC 2010

Este Cmdlet permite obtener información sobre los procesadores de la máquina recibida como parámetro o de la máquina local si se omite este parámetro. La información es obtenida procesando la clase WMI Win32_Processor del espacio de nombres root/CIMv2. La función permite especificar las credenciales con las que se conectará a WMI, credenciales que serán ignoradas en el caso del equipo local, pues no se puede acceder a WMI con credenciales alternativas desde el equipo local.

Lee el resto de esta entrada »

Posted in Informatica, PowerShell, Scripting | 1 Comment »

PowerShell: Cmdlet para invocar Get-WmiObject con credenciales alternativas controlando error por equipo local

Posted by urpiano en Jueves 9 \09\UTC diciembre \09\UTC 2010

Una particularidad de WMI es que no se puede acceder con credenciales alternativas al equipo local, pues eso provoca un error. Cuando queremos realizar un script que vaya obteniendo los objetos que son instancias de una clase de WMI en varios equipos (obtenidos sus nombres, por ejemplo, de un fichero de texto) se puede dar el caso de que entre los nombres de equipo de la lista esté el equipo local, lo que provocará un error si estamos accediendo a WMI con credenciales alternativas. Este Cmdlet permite conectar a WMI con o sin credenciales de manera transparente y obtener los resultados, independientemente de cómo se ha conectado.

Lee el resto de esta entrada »

Posted in Informatica, PowerShell, Scripting | 4 Comments »

Powershell: Cmdlet para cambiar la lista de servidores DNS

Posted by urpiano en Martes 30 \30\UTC noviembre \30\UTC 2010

Esta función cambia los servidores DNS de todas las conexiones de red que presenten como uno de sus servidores DNS el que se pasa como parámetro de búsqueda. La función recibe una lista de servidores y una lista con los nuevos servidores DNS que se deben configurar. El cambio es realizado a través de WMI, en concreto con el método SetDNSServerSearchOrder de la clase CIMv2 Win32_NetworkAdapterConfiguration. Por ello, es necesario que los equipos remotos tengan habilitada la excepción de administración remota en el caso de tener el firewall en estado activo.

Lee el resto de esta entrada »

Posted in Informatica, PowerShell, Scripting | 2 Comments »

PowerShell: Cmdlet para obtener información sobre la memoria física de un equipo

Posted by urpiano en Miércoles 3 \03\UTC noviembre \03\UTC 2010

Esta función de PowerShell obtiene información sobre la memoria física de un equipo, local o remoto, en base a una consulta WMI a la clase Win32_PhysicalMemory. La función permite recibir el nombre del equipo a mirar por encaminamiento, lo que permite encaminar toda un conjunto de equipos y obtener un listado de memoria física.

Lee el resto de esta entrada »

Posted in Informatica, PowerShell, Scripting | 2 Comments »