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.
PowerShell Tip: Separación Automática de Arrays – $OFS
Publicado por urpiano en Miércoles 25 de enero de 2012
Publicado en Informatica, PowerShell, Scripting, Tips | Deja un Comentario »
PowerShell: Cómo Almacenar de Manera Segura una Contraseña y Utilizarla desde un Script
Publicado por urpiano en Viernes 20 de enero de 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?
Publicado en Informatica, PowerShell, Scripting, Tips | Deja un Comentario »
PowerShell Tip: Cómo Enumerar Todas las Propiedades de una Clase de Active Directory
Publicado por urpiano en Viernes 13 de enero de 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.
Publicado en Informatica, PowerShell, Scripting, Tips, Uncategorized | Deja un Comentario »
PowerShell Tip: Mostrar el Progreso con Texto en un Bucle
Publicado por urpiano en Lunes 12 de diciembre de 2011
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.
Publicado en Informatica, PowerShell, Scripting, Tips | Deja un Comentario »
PowerShell Tip: Mostrar Una Cuenta Hacia Delante o Hacia Detrás
Publicado por urpiano en Viernes 2 de diciembre de 2011
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.
Publicado en Informatica, PowerShell, Tips | 1 comentario
PowerShell: Cmdlet Para Importar Contactos de un Exchange de Producción a Otro Exchange de Laboratorio Sin Relación de Confianza Entre Ambos
Publicado por urpiano en Miércoles 30 de noviembre de 2011
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.
Publicado en Exchange, Informatica, PowerShell, Scripting | Deja un Comentario »
PowerShell: Cmdlet Para Inventariar con WMI y Obtener Ficheros HTML con los Resultados
Publicado por urpiano en Lunes 28 de noviembre de 2011
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.
Publicado en Informatica, PowerShell, Scripting | Deja un Comentario »
PowerShell Tip: Saber El Valor Predeterminado De los Parámetros De Un Cmdlet
Publicado por urpiano en Lunes 28 de noviembre de 2011
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.
Publicado en Informatica, PowerShell, Scripting, Tips, Uncategorized | Deja un Comentario »
VbScript: Script Para Obtener Un Listado HTML De Los Productos Instalados Con Windows Installer
Publicado por urpiano en Jueves 24 de noviembre de 2011
Este script nos permite obtener un listado con los productos intalados con Windows Installer en el equipo (son aquellos que fueron instalados con un fichero MSI), es decir, las instancias de la clase Win32_Product de WMI que tengamos en el equipo donde ejecutemos este script. El listado que obtenemos es guardado en un fichero HTML como tabla, en la que podremos ver el producto y las propiedades que tengamos del mismo.
Publicado en Informatica, Scripting, VBScript | 1 comentario
PowerShell: Cmdlet para Obtener un Listado de las Membresías de Grupo de Un Usuario
Publicado por urpiano en Lunes 24 de octubre de 2011
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.
Publicado en Informatica, PowerShell, Scripting | Deja un Comentario »
PowerShell: Cmdlet Para Realizar Búsquedas en Active Directory y Obtener los Resultados Como Objetos DirectoryEntry
Publicado por urpiano en Viernes 21 de octubre de 2011
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.
Publicado en Informatica, PowerShell, Scripting | 1 comentario
PowerShell: Cmdlet Para Traducir un Nombre NetBios a Distinguido y Viceversa
Publicado por urpiano en Viernes 21 de octubre de 2011
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.
Publicado en Informatica, PowerShell, Scripting | 1 comentario
PowerShell: Cmdlet Para Obtener Un Objeto DirectoryEntry a Partir de su Ruta LDAP
Publicado por urpiano en Viernes 21 de octubre de 2011
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.
Publicado en Informatica, PowerShell, Scripting | 1 comentario
PowerShell: Cmdlet para Obtener la Cadena SID de un Array SID
Publicado por urpiano en Viernes 21 de octubre de 2011
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).
Publicado en Informatica, PowerShell, Scripting | 1 comentario
Script VbScript para obtener la configuración de Proxy de IE del usuario que lo ejecuta
Publicado por urpiano en Jueves 25 de agosto de 2011
Desarrollado para dar respuesta en el foro de scripting de Technet, este script permite averiguar la configuración de proxy en Internet Exporer del usuario que lo lanza.
Publicado en Informatica, Scripting, VBScript | 1 comentario
PowerShell: Cmdlet para obtener los miembros de un grupo
Publicado por urpiano en Miércoles 20 de julio de 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.
Publicado en Informatica, PowerShell, Scripting | Deja un Comentario »
¡La que te puede liar un nulo!
Publicado por urpiano en Lunes 4 de julio de 2011
Tremendo lío tuvimos en el bosque… Resulta que de repente empezó a fallar la réplica y varios controladores de dominio se reiniciaban nada más arrancar, mostrando el conocido mensaje LSASS.EXE: Se está apagando el sistema. Guarde todos los trabajos en curso y cierre la sesión. Todos los cambios que no haya guardado se perderán. El apagado, iniciado por NT AUTHORITY\SYSTEM comenzará en 56 segundos. Mensaje de apagado: El proceso de sistema ‘C:\WINDOWS\system32\lsass.exe’ ha finalizado inesperadamente y muestra el código de estado -1073741819. El sistema se cerrará y reiniciará.
Publicado en Curiosidades, Informatica, Noticias | 1 comentario
PowerShell: Cmdlets para cambiar el caso en atributos de usuario de Active Directory
Publicado por urpiano en Jueves 5 de mayo de 2011
¿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.
Publicado en Informatica, PowerShell, Scripting | 2 Comentarios »
Script VbScript para obtener información de un bosque de Active Directory (2)
Publicado por urpiano en Jueves 28 de abril de 2011
Este script genera una serie de ficheros de valores separados por tabulador (ideales para ser abiertos por Excel o importarlos a una base de datos), con información del bosque de Active Directory al que pertenece el equipo desde el que se lanza, así como información de Exchange. Obviamente, la cuenta con la que se ejecute debe tener permisos de lectura de AD en los diferentes dominios que conformen el bosque. Se trata de una actualización de este otro script, y añade la información de equipos y usuarios, que en el anterior no era obtenida. El script crea los ficheros:
Publicado en Informatica, Scripting, VBScript | 1 comentario
PowerShell: Obtener los buzones de correo de un servidor Domino
Publicado por urpiano en Lunes 25 de abril de 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).
Publicado en Informatica, PowerShell, Scripting, Tips | Deja un Comentario »
PowerShell: Usar los Cmdlets de SCVMM 2008 R2 en cualquier consola de PowerShell
Publicado por urpiano en Viernes 21 de enero de 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.
Publicado en Informatica, PowerShell, Tips | 2 Comentarios »
PowerShell: Cmdlet para listar las conexiones de red de un equipo
Publicado por urpiano en Miércoles 19 de enero de 2011
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.
Publicado en Informatica, PowerShell, Scripting | Deja un Comentario »
Devolución de funciones en PowerShell y tipos de datos personalizados
Publicado por urpiano en Miércoles 12 de enero de 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.
Publicado en Informatica, PowerShell, Scripting | Deja un Comentario »
PowerShell: Cmdlet para obtener información sobre la memoria física de un equipo (2)
Publicado por urpiano en Jueves 9 de diciembre de 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.
Publicado en Informatica, PowerShell, Scripting | 1 comentario
PowerShell: Cmdlet para inventariar los procesadores de un equipo
Publicado por urpiano en Jueves 9 de diciembre de 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.
Publicado en Informatica, PowerShell, Scripting | 1 comentario
PowerShell: Cmdlet para invocar Get-WmiObject con credenciales alternativas controlando error por equipo local
Publicado por urpiano en Jueves 9 de diciembre de 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.
Publicado en Informatica, PowerShell, Scripting | 3 Comentarios »
Powershell: Cmdlet para cambiar la lista de servidores DNS
Publicado por urpiano en Martes 30 de noviembre de 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.
Publicado en Informatica, PowerShell, Scripting | Deja un Comentario »
Script VbScript Para Crear Un Acceso Directo
Publicado por urpiano en Martes 23 de noviembre de 2010
Este script permite crear un acceso directo, ya sea de aplicación (fichero de extensión .lnk) como de URL (fichero de extensión .url, que contiene una URL y se abre con el navegador de internet predeterminado), en una carpeta especial (el escritorio del usuario, por ejemplo). El script está pensado para ser puesto como script de inicio de máquina (debería apuntar a carpetas especiales de todos los usuarios, como AllUsersDesktop) o inicio de sesión (en el caso de apuntar a carpetas de usuario). Permite establecer el icono del acceso directo de forma personalizada, con ejecutables, DLLs o fichero ICO, así como establecer si será sobrescrito en el caso de que ya exista.
Publicado en Informatica, Scripting, VBScript | Deja un Comentario »
Script VbScript para obtener los grupos a los que pertenecen todos los usuarios de un dominio
Publicado por urpiano en Miércoles 17 de noviembre de 2010
Script que devuelve las membresías, el tipo de las mismas (directa cuando el grupo aparece en la propiedad MemberOf o heredada cuando la pertenencia al grupo es debida a pertenecer a un grupo que pertenece al listado), si tienen permiso de acceso remoto o VPN y la OU a la que pertenecen todos los usuarios del dominio. La salida a pantalla o fichero se produce en formato de valores separados por tabuladores, lo que hace que al abrir el fichero en Excel tengamos los datos perfectamente separados por columnas.
Publicado en Informatica, Scripting, VBScript | 4 Comentarios »
PowerShell: Cmdlet para obtener información sobre la memoria física de un equipo
Publicado por urpiano en Miércoles 3 de noviembre de 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.
Publicado en Informatica, PowerShell, Scripting | 2 Comentarios »