Archivo

Archivo para marzo, 2012

Añadir el block de notas al menú contextual

domingo, 18 de marzo de 2012 Comments off

Es muy cómodo que al pinchar con el botón derecho del ratón sobre cualquier archivo nos aparezca una opción que lo edite automáticamente con el block de notas. Para ello no hay más que añadir un valor al registro, por ejemplo creando un archivo con extensión .reg con el siguiente contenido y combinándolo con el registro.

 

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell]

[HKEY_CLASSES_ROOT\*\shell\Block_Notas]

[HKEY_CLASSES_ROOT\*\shell\Block_Notas\command] @=»notepad.exe %1″

Categories: Sin categoría Tags:

Script de Inicio de Sesión en VBScript

domingo, 18 de marzo de 2012 Comments off

Usar VBScript para hacer scripts de inicio de sesión es mucho más potente que ejecutar archivos .bat con comandos de DOS. Para asignar estos scripts a los usuarios lo podemos hacer de varias maneras, en función de si son W2000 o posteriores, o si tenemos equipos con NT4 y Windows 9x en nuestro dominio.

En Usuarios y Equipos de AD podemos editar las propiedades de cada usuario, y en su perfil le podemos especificar un archivo de inicio de sesión, que habremos colocado previamente en el recurso NETLOGON de un DC. Este archivo se le ejecutará siempre que inicie sesión. Sin embargo, hemos de tener en cuenta que los equipos previos a Windows 2000 no pueden ejecutar directamente archivos con extensión .vbs, por lo que si tenemos este tipo de equipos lo que hemos de hacer es poner como script de inicio de sesión un archivo .bat, que también colocaremos en el NETLOGON, y que contendrá una linea como la siguiente para lanzar el .vbs

WSCRIPT %0\..\miscript.vbs

También podemos aprovechar ese archivo bat para ejecutar comandos DOS, como para sincronizar de forma sencilla la hora con un DC. Esto en W2000 no es necesario, pero los Windows 98 no se sincronizan automáticamente con el dominio, por lo que nos vendrá bien. Podemos hacerlo con la siguiente linea, que en los W2000 en que no inicie sesión un administrador no se ejecutará, aunque tampoco parará el script.

NET TIME \\SERVIDOR /SET /YES

El archivo .vbs nos va a permitir hacer muchas cosas, y personalizar el script según nuestras necesidades, pero lo más básico que haremos con él es conectar unidades de red en nuestro equipo asignándoles letras de unidad. Un  ejemplo de código para empezar que pondríamos en el archivo miscript.vbs que lanza el .bat sería como sigue

‘********************************************** Option Explicit Dim oNet, sUser, startTime

On Error Resume Next

‘ Objeto Red Set oNet = CreateObject(«WScript.Network»)

‘ Obtenemos el login de usuario. En Windows 9x, el usuario puede no estar todavía autentificado ‘ cuando el script comienza a ejecutarse; En ese caso reitera cada 1/2 segundo sUser = oNet.UserName          ‘En minúsculas

startTime = Now

Do While sUser = «»

If DateDiff(«s», startTime, Now) > 600 Then

Wscript.Quit

Wscript.Sleep 500

sUser = oNet.UserName

Loop

‘ Mapeado de la unidad F particular de cada usuario

oNet.RemoveNetworkDrive «U:»

oNet.MapNetworkDrive «U:», «\\servidor\usuarios\» & sUser

oNet.RemoveNetworkDrive «X:»

oNet.MapNetworkDrive «X:», «\\servidor\comunes\»

‘**********************************************

Notar que en los equipos con Windows 2000 o superior es necesario eliminar el mapeo de la unidad antes de volver a asignarla, pues si no lo ignora y deja la asignación anterior que hubiese con esa letra.

Por fin, si no tenemos equipos con Windows 9x o NT4 podemos especificar directamente el archivo .vbs como script de inicio de sesión, y también podemos asignar este tipo de archivos mediante GPO (configuración de usuario – secuencia de comandos: inicio de sesión / cierre de sesión), procedimiento por el que podemos asignar más de un script.

Categories: Sin categoría Tags:

Colocar en una variable de un fichero por lotes la dirección ip actual

domingo, 18 de marzo de 2012 Comments off

Con el siguiente código conseguimos poner en una variable «dirip» la dirección IP actual que tenemos.

for /f «tokens=1,2* delims=:» %%i in (‘ ipconfig ^| find «IP» ‘) do set dirip=%%j

set dirip=%dirip:~1%

Categories: Sin categoría Tags:

Como comprobar si un proceso se está ejecutando en una máquina

domingo, 18 de marzo de 2012 Comments off

Si no queremos usar programas complejos como el Microsoft Operations Manager, podemos recurrir a la herramienta pslist, que se puede descargar gratuitamente de http://www.sysinternals.com/ProcessesAndThreadsUtilities.html , y crear un bat que tenga el siguiente código:
for /f «tokens=1,2* delims= » %%i in (‘ pslist wmplayer ^| find «wmplayer» ‘) do set prog=%%i if %prog% == wmplayer goto fin net send pc01 «WMP no está cargado en memoria» :fin
Primero hay que ejecutar pslist en una ventana de comando y ver entre todos los procesos cual es el nombre del que se quiere monitorizar. En el código del ejemplo he puesto el wmplayer, que es el reproductor de Windows Media. Sustituya wmplayer por el nombre del proceso, y pc01 por el nombre del equipo en que se quiera recibir la alerta (el servicio messenger tiene que estar habilitado y arrancado en los dos equipos). Ahora tan sólo hay que usar el programador de tareas para que el bat se ejecute periódicamente en el equipo que tiene el programa. También se puede aprovechar que pslist se puede ejecutar en remoto y cambiar el código al siguiente, en el que además si el proceso no está en memoria, lo carga:
for /f «tokens=1,2* delims= » %%i in (‘ pslist \\EQUIPOREMOTO wmplayer ^| find «wmplayer» ‘) do set prog=%%i if %prog% == wmplayer goto fin net send pc01 «WMP no está cargado en memoria» start wmplayer.exe :fin

Categories: Sin categoría Tags:

Roles Maestros en el Directorio Activo

domingo, 18 de marzo de 2012 Comments off

En el Directorio Activo, todos los controladores de dominio son iguales (al menos lo eran hasta Server 2008), a diferencia de NT4 en que un servidor era el principal (PDC) y el resto eran copias de sólo lectura de la base de datos del dominio (los BDC). Sin embargo, hay una serie de roles que sólo pueden ser ejercidos por un único DC, al tratarse de funciones que requieren ser únicas en el bosque o dominio. Por así decirlo, el DC que ostenta en un momento dado un rol maestro realiza funciones de moderador o director de esa función. Un rol maestro puede transferirse de un DC a otro, incluso forzarse el cambio caso de desastre del DC que lo ostenta, pero en ningún momento puede haber más de un DC con el mismo rol. A estos roles se les conoce como FSMO (Flexible Single Master Operations). Los tipos de roles maestros de operaciones son cinco, dos a nivel bosque y tres en cada dominio del mismo.

1) Bosque: A este nivel, y localizados siempre en algún DC del dominio ra´´iz del bosque (el primero que montas cuando lo creas) hay dos, el maestro de esquema y el maestro de nombres de dominio.

– Maestro de Esquema: es el DC que dirige todas las operaciones de cambio en el esquema del AD (la definición de clases de objeto, con sus atributos). Cuando se hace una modificación al esquema, siempre se realiza sobre el maestro de esquema (aunque la consola la lancemos desde otro DC), y a continuación se replica a todos los DCs del bosque. Esto permite asegurar que el esquema sea único para todo el AD.

– Maestro de Nombres de Dominio: El DC que ostenta este rol es el que controla que los nombres propuestos para nuevos dominios en el bosque no estén en uso, y además que la topología de nombres sea la correcta (por ejemplo, si tenemos un árbol con un dominio de nombre «españa.es», no podremos crear otro árbol de nombre «sevilla.españa.es», sino que tendrá que ser un subdominio del anterior. 2) Dominio: En cada dominio del bosque hay tres roles maestros, que pueden ser ejercidos por el mismo o por distintos DCs del dominio. Son los siguientes:

– Emulador de PDC: Entre otras, realiza todas aquellas tareas que los equipos anteriores a Windows 2000 esperaban que se realizasen en un PDC de NT4. Entre otras cosas, cuando un DC recibe una modificación de la contraseña de un usuario, al primero que se lo replica es al PDC, quien además ejerce de árbitro cuando se produce una autenticación incorrecta de la contraseña de un usuario (antes de generar el mensaje de error, el DC en que se valida la contraseña errónea le pregunta al PDC por si éste ya hubiera recibido un cambio de la contraseña).   Por otro lado, el PDC de un dominio es la cabeza jerárquica en el mismo para la sincronización de tiempo (los clientes sincronizan con el DC con que se validan, y éstos con el PDC de su dominio). A su vez, el PDC del dominio raíz del bosque es la cabeza jerárquica de sincronización de tiempo para todos los PDCs de los dominios del bosque. Normalmente, éste PDC y no otro es el que configuraremos para sincronizar con una fuente externa de tiempo fiable (si es que lo necesitamos).   También, cuando editamos una GPO desde cualquier equipo, por defecto se hace contra la copia almacenada en el PDC del dominio y se guardan los cambios en el mismo, tras lo cual se replican al resto de DCs.

– RID Master (Relative Identifier Master): Como he comentado antes, al ser todos iguales, en cualquier DC del dominio se pueden crear objetos del AD.  Al crear un objeto de tipo usuario, grupo o equipo se le asigna un identificador único de seguridad en el dominio (SID). Este identificador consta de una parte única para todo el dominio y de otra variable dentro del mismo, que le asigna el DC en que se crea el objeto. Para evitar que dos DCs distintos generen el mismo SID para un objeto, el DC que hace de RID master asigna al resto de DCs del dominio un número de IDs (un RID Pool), de tal forma que son distintos en cada DC. Cuando a un DC se le está acabando el número de IDs disponibles, solicita al RID Master que le asigne un nuevo pool de RIDs. Si el RID Master cayese y no forzásemos que otro DC pasase a llevar este rol, llegaría un momento en que no se podrían crear más objetos en el dominio por falta de IDs.

– Maestro de Infraestructura: Es el DC responsable de actualizar en otros dominios de su mismo bosque aquellos objetos del dominio propio que son referenciados por objetos de otros dominios. Por poner un ejemplo claro que lo explique, podemos tener un grupo de usuarios en un dominio, al que pertenecen cuentas de usuario de otros dominios. Si en un momendo dado cambiamos el nombre al grupo, el Maestro de Infraestructura es el encargado de notificar a los de otros dominios de este cambio. En un dominio, el Maestro de Infraestructura no puede ser al mismo tiempo Catálogo Global, salvo en el caso de un bosque de dominio único, debido al modo como ese DC consulta a los de otros dominios sobre los cambios de este tipo.

Los cambios de servidor para cada rol maestro se pueden hacer de dos formas: con las distintas herramientas gráficas de administración del AD (Usuarios y Equipos de AD, Sitios y Servicios de AD, Dominios y Confianzas de AD y cargando en una consola mmc el complemento de esquema), o bien con la herramienta de linea de comandos «ntdsutil». Para que te aparezca esta última tienes que instalar las support tools del CD del servidor. Además, con las herramientas gráficas se puede cambiar un rol de servidor siempre que tanto el de origen como el de destino estén en linea. Si el original hubiese caído, el forzamiento del cambio (seize) sólo se puede hacer con ntdsutil, siguiendo los pasos que describe el siguiente artículo:  http://support.microsoft.com/kb/255504

Por fin, hay otro rol que no se define como tal como Maestro de Operaciones, que es el de Catálogo Global. En cada dominio tiene que haber al menos uno (el primero que promocionamos al crear un dominio lo será automáticamente, pero al resto se lo tendremos que especificar expresamente en las propiedades del DC en Sitios y Servicios de AD). Un Catálogo Global es un DC del dominio que además de tener toda la información de los atributos de todos los objetos de su propio dominio, tiene un subconjunto de los atributos de todos los objetos de todos los dominios del bosque. La réplica de estos datos se realiza de forma independiente entre los Catálogos Globales. Por defecto, el AD tiene marcado en su esquema cuales son los atributos de cada clase de objeto que se tienen que replicar entre Catálogos Globales, pero esto lo podemos modificar si fuera necesario editando las propiedades de cada atributo en el maestro de esquema del bosque. Existen unas reglas para determinar cuantos DCs deben ser Catálogos Globales. En un bosque de dominio único, todos los DCs se pueden configurar como GCs, incluso el Maestro de Infraestructura, ya que éste no tiene realmente nada que hacer como tal. En un bosque de múltiples dominios, en cada Sitio de AD (definido en Sitios y Servicios de AD) tendremos que configurar como GCs la mitad de los DCs de cada dominio en ese Sitio. Además, en este caso el Maestro de Infraestructura de cada dominio no debe ser Catálogo Global, salvo que un dominio no tuviese más que un único DC.

Categories: Sin categoría Tags:

Cambiar contraseñas periódicamente a varios usuarios

domingo, 18 de marzo de 2012 Comments off

Un usuario me preguntaba si era posible automatizarlo. Esta es la respuesta que le dí:

Esto lo puedes hacer mediante un script .vbs que ejecutarás en el servidor.
Lo puedes poner en el escritorio, editarlo para cambiar la password y ejecutarlo.  La complejidad de la clave debe coincidir con la que tengas establecida en la GPO del dominio, donde además tendrás que establecer la frecuencia mínima del cambio de contraseña a 1 día (deberás probarlo, pues quizá tengas que reducirlo a 0 para que te permita el cambio todos los días a la misma hora, ya que si lo ejecutas de forma manual es posible que no hayan transcurrido 24 horas exactas desde el cambio del día anterior). El script sería similar al siguiente:
Set clave = «LaContraseña99!#» Set objUser = GetObject _ («LDAP://cn=usuario1,ou=visitantes,dc=dominio,dc=local«) objUser.SetPassword clave Set objUser = GetObject _ («LDAP://cn=usuario2,ou=visitantes,dc=dominio,dc=local«) objUser.SetPassword clave

y así. Esto si les quieres poner la misma clave a todos. Por supuesto, si son muchos el código se puede hacer más elegante, con un bucle que lea los nombres de usuarios de la OU y les vaya cambiando las claves. Si en vez de que tengan todos la misma las quieres diferentes, en lugar de especificarla al principio les pones en cada línea la que quieras.
Y si lo quieres automatizar, podrías crear un fichero de texto con las claves de todo el mes en el que cada línea tenga el día del mes y las claves correspondientes a los usuarios, separadas por comas. Al principio del script haces una lectura del fichero en la que busques la línea cuyo primer campo coincida con el día del mes en que estás, y el segundo campo sería la contraseña a establecer a los usuarios. De esta forma puedes programar la ejecución del .vbs todos los días a primera hora y sólo tendrás que actualizar una vez al mes el fichero de contraseñas. Quedaría algo así como lo siguiente:

Const ForReading = 1 strComputer = «.»

Set objWMIService = GetObject(«winmgmts:\\» & strComputer & «\root\cimv2»)

Set colItems = objWMIService.ExecQuery(«Select * from Win32_LocalTime»)

For Each objItem in colItems

hoy = objItem.Day

Next
Set objFSO = CreateObject(«Scripting.FileSystemObject»)

Set objTextFile = objFSO.OpenTextFile _

(«c:\scripts\passwords.txt», ForReading)

Do Until objTextFile.AtEndOfStream

strNextLine = objTextFile.Readline arrClaves = Split(strNextLine , «,»)

If arrClaves(0) = hoy then

clave1 = arrClaves(1)

clave2 = arrClaves(2)

clave3 = arrClaves(3)

clave4 = arrClaves(4)

End If

Next

Loop

Set objUser = GetObject _

LDAP://cn=usuario1,ou=visitantes,dc=dominio,dc=local«)

objUser.SetPassword clave1

Set objUser = GetObject _

LDAP://cn=usuario2,ou=visitantes,dc=dominio,dc=local«)

objUser.SetPassword clave2 …

Categories: Sin categoría Tags:

Cómo hacer que un logon script .bat o .cmd no muestre la ventana de comando de ejecución.

domingo, 18 de marzo de 2012 Comments off

En la GPO del dominio, ve a la rama Configuración de usuario – Plantillas administrativas – Sistema – Scripts y habilita la política «Ejecutar scripts de inicio de sesión heredados de forma oculta». Cuando habla de «heredados» se refiere a los archivos .bat o .cmd, ya que los .vbs o .js no los muestra por defecto (si te fijas, hay otra política al lado para permitir ver estos últimos en caso de necesidad.

Categories: Sin categoría Tags:

Restaurar los registros de servicio en la zona _msdcs

domingo, 18 de marzo de 2012 Comments off

El eterno error causa de buena parte de los problemas en el Directorio Activo es usar una incorrecta configuración DNS, generalmente poniendo como servidores DNS los de un proveedor de internet. Si esto además lo hacemos en un DC, éste no se va a publicar correctamente en la zona DNS del dominio. Para solventarlo hay que hacer lo siguiente:

Ve a la configuración tcpip del servidor y te aseguras de que como servidor DNS principal se tiene a su propia dirección ip y no tienes ningún otro
servidor DNS que no sea un DC del dominio (y mucho menos servidores DNS de internet). En la misma configuración, pulsando el botón de avanzadas, te vas a la solapa DNS y en la parte inferior le escribes como sufijo DNS, el nombre de tu dominio (midominio.com), y le marcas las dos casillas de registrarse en DNS y de usar ese sufijo para registrarse. A continuación mira las propiedades de la zona DNS y te aseguras de que permite actualizaciones dinámicas y que está almacenada en Active Directory (esto último no es imprescindible, pero sí más que aconsejable). Si la tuvieras de otra forma cámbialo. Una vez hecho, abre una ventana de comando y teclea lo siguiente:
IPCONFIG /REGISTERDNS

NET STOP NETLOGON

NET START NETLOGON
Tras esto cierras la ventana de comando y en la consola de administración del servidor DNS ya te tendrá que aparecer la zona _msdcs y los registros correspondientes.

Categories: Sin categoría Tags: