Archivo

Archivo para la categoría ‘Directorio Activo’

Script que permite limpiar o subir fotografía a AD.

martes, 26 de marzo de 2013 Sin comentarios

 

Hola.

Os cuelgo a continuación un Script que he terminado y que permite al usuario subir o limpiar su foto del directorio activo, para que luego se alimente, ya sabéis, Exchange, Lync, etc.

Diréis, ¿Por qué no lo haces en C# y lo compilas?, pues porque lo he ido haciendo en mis ratos libres y como muchas otras cosas, nació para algo diferente. Pero me gusta porque el usuario lo puede lanzar con unas simples instrucciones (botón derecho, ejecutar con poweshell) y al contrario de algunas aplicaciones, no tiene por qué, tener derechos de administrador local para instalarse nada. Sonrisa

Como es común en estas cosas, solo tenéis que localizar y adaptar esta línea de aquí:

$root = [ADSI]’GC://dc=dominio,dc=local’ #Inyecta el dominio con el que trabajar

Se que es mejorable,  lo se Guiño.

También tiene varias funciones que os pueden servir de utilidad.

#——————————————————
#Script encargado de guardar o limpiar fotografía en AD del campo Thumbnailphoto

#Autor: Miguel Hernández

#——————————————————

[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Drawing")
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")

#——————————————————————————-
#Funciones
#——————————————————————————-

#Toma usuario y lo devuelve con valor $X0
function tomausuario
{

    $objForm0 = New-Object System.Windows.Forms.Form
    $objForm0.Text = "Fotografía en Directorio Activo"
    $objForm0.Size = New-Object System.Drawing.Size(300,120)
    $objForm0.StartPosition = "CenterScreen"

    $objForm0.KeyPreview = $True
    $objForm0.Add_KeyDown({if ($_.KeyCode -eq "Enter")
        {$x0=$objTextBox0.Text;$objForm0.Close()}})    #toma el valor X0
    $objForm0.Add_KeyDown({if ($_.KeyCode -eq "Escape")
        {$objForm0.Close()}})

    $objLabel0 = New-Object System.Windows.Forms.Label
    $objLabel0.Location = New-Object System.Drawing.Size(10,10)
    $objLabel0.Size = New-Object System.Drawing.Size(280,20)
    $objLabel0.Text = "Usuario:"
    $objForm0.Controls.Add($objLabel0)

    $objTextBox0 = New-Object System.Windows.Forms.TextBox
    $objTextBox0.Location = New-Object System.Drawing.Size(10,30)
    $objTextBox0.Size = New-Object System.Drawing.Size(260,20)
    $objForm0.Controls.Add($objTextBox0)

    $OKButton0 = New-Object System.Windows.Forms.Button
    $OKButton0.Location = New-Object System.Drawing.Size(110,60)
    $OKButton0.Size = New-Object System.Drawing.Size(75,23)
    $OKButton0.Text = "OK"
    $OKButton0.Add_Click({$x=$objTextBox0.Text;$objForm0.Close()})
    $objForm0.Controls.Add($OKButton0)

    $objForm.Topmost = $True

    $objForm0.Add_Shown({$objForm0.Activate()})
    [void] $objForm0.ShowDialog()

return $x0

}

#———————————————————-
#Función resultado
#———————————————————-

#Abre form con el valor $valor escrito.

function resultado
{

    $objForm0 = New-Object System.Windows.Forms.Form
    $objForm0.Text = "Resultado"
    $objForm0.Size = New-Object System.Drawing.Size(400,90)
    $objForm0.StartPosition = "CenterScreen"

    $objLabel0 = New-Object System.Windows.Forms.Label
    $objLabel0.Location = New-Object System.Drawing.Size(10,20)
    $objLabel0.Size = New-Object System.Drawing.Size(380,20)
    $objLabel0.Text = $valor
    $objForm0.Controls.Add($objLabel0)

       $objForm.Topmost = $True

    $objForm0.Add_Shown({$objForm0.Activate()})
    [void] $objForm0.ShowDialog()
}

#————————————————————-
#Función donde se abre ventana donde elegir fotografía
#————————————————————-

function Select-FileDialog
    {
        param([string]$Title,[string]$Directory,[string]$Filter="All Files (*.*)|*.*")
        [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms") | Out-Null
        $objForm = New-Object System.Windows.Forms.OpenFileDialog
        $objForm.InitialDirectory = $Directory
        $objForm.Filter = $Filter
        $objForm.Title = $Title
        $objForm.ShowHelp = $true
        $Show = $objForm.ShowDialog()

        If ($Show -eq "OK")
        {
            Return $objForm.FileName
        }
        Else
        {
            $valor = "Operación cancelada por el usuario."
            resultado $valor
        }
    }

#——————————————————
#Empieza el script
#——————————————————

#Ventana Form donde se pregunta la acción a realizar

$objForm = New-Object System.Windows.Forms.Form
$objForm.Text = "Fotografía en Directorio Activo"
$objForm.Size = New-Object System.Drawing.Size(300,200)
$objForm.StartPosition = "CenterScreen"

$objForm.KeyPreview = $True
$objForm.Add_KeyDown({if ($_.KeyCode -eq "Enter")
    {$x=$objTextBox.Text;$objForm.Close()}})
$objForm.Add_KeyDown({if ($_.KeyCode -eq "Escape")
    {$objForm.Close()}})

$OKButton = New-Object System.Windows.Forms.Button
$OKButton.Location = New-Object System.Drawing.Size(75,130)
$OKButton.Size = New-Object System.Drawing.Size(75,23)
$OKButton.Text = "OK"
$OKButton.Add_Click({$x=$objTextBox.Text;$objForm.Close()})
$objForm.Controls.Add($OKButton)

$objLabel0 = New-Object System.Windows.Forms.Label
$objLabel0.Location = New-Object System.Drawing.Size(10,10)
$objLabel0.Size = New-Object System.Drawing.Size(280,20)
$objLabel0.Text = "1. Limpiar fotografía actual"
$objForm.Controls.Add($objLabel0)

$objLabel1 = New-Object System.Windows.Forms.Label
$objLabel1.Location = New-Object System.Drawing.Size(10,30)
$objLabel1.Size = New-Object System.Drawing.Size(280,20)
$objLabel1.Text = "2. Cambiar fotografía"
$objForm.Controls.Add($objLabel1)

$CancelButton = New-Object System.Windows.Forms.Button
$CancelButton.Location = New-Object System.Drawing.Size(150,130)
$CancelButton.Size = New-Object System.Drawing.Size(75,23)
$CancelButton.Text = "Cancelar"
$CancelButton.Add_Click({$objForm.Close()})
$objForm.Controls.Add($CancelButton)

$objLabel = New-Object System.Windows.Forms.Label
$objLabel.Location = New-Object System.Drawing.Size(10,70)
$objLabel.Size = New-Object System.Drawing.Size(280,20)
$objLabel.Text = "Seleccionar acción:"
$objForm.Controls.Add($objLabel)

$objTextBox = New-Object System.Windows.Forms.TextBox
$objTextBox.Location = New-Object System.Drawing.Size(10,90)
$objTextBox.Size = New-Object System.Drawing.Size(260,20)
$objForm.Controls.Add($objTextBox)

$objForm.Topmost = $True

$objForm.Add_Shown({$objForm.Activate()})
[void] $objForm.ShowDialog()

#Devuelve el valor $X con 1 o 2 = 1: Limpiar fotografía / 2: Cambiar fotografía

$SAMName = tomausuario  #Pregunta el usuario

    $root = [ADSI]’GC://dc=dominio,dc=local’  #Inyecta el dominio con el que trabajar
    $searcher = new-object System.DirectoryServices.DirectorySearcher($root)
    $searcher.filter = "(&(objectClass=user)(sAMAccountName=$SAMName))"
    $user = $searcher.findall()
    $userdn = $user[0].path
    $userdn = $userdn.trim("GC")
    $userdn = "LDAP" + $userdn
     
      
IF ($x -EQ "1") {

    try
    {
        $user = [ADSI]($userdn)
        $user.Properties["thumbnailPhoto"].Clear()
        $user.CommitChanges()
        $valor = "La fotografía ha sido borrada del servidor"
        resultado $valor
    }
    catch
    {
        $valor = "La fotografía no ha podido ser borrada del servidor"
        resultado $valor
    }
       
}

IF ($x -EQ "2") {
  
    try
    {
        $photo = Select-FileDialog -Title "Selecciona una fotografía (ext.jpg o .png)" -Directory "%userprofile%" -Filter "JPG Images (*.jpg)|*.jpg|PNG Images (*.png)|*.png"
        [byte[]]$file = Get-Content $photo -Encoding Byte
        $user = [ADSI]($userdn)
       
        # Limpiar foto anterior
        $user.Properties["thumbnailPhoto"].Clear()

        # Guardar fotografía
        $user.Properties["thumbnailPhoto"].Add($file)
        $user.CommitChanges()
        $valor = "La fotografía ha sido guardada del servidor"
        resultado $valor
    }
    catch
    {
        $valor = "La fotografía no ha sido guardada en el servidor"
        resultado $valor
    }      
}

Categories: Directorio Activo, Exchange, lync, powershell Tags:

Crear Clúster en ubicación con un Rodc con un simple usuario del dominio.

jueves, 30 de agosto de 2012 Sin comentarios

Hola.

Algunas de las novedades que más me gustan en Windows Server 2012 las incorpora el rol de Failover Clúster.

En esta entrada vamos a explotar una novedad gracias a la cual podremos crear un clúster, ubicado en una DMZ en la que por seguridad, hemos ubicado un RODC para ser su DC de referencia.

Algo a tener en cuenta es que podemos ubicar la cuenta de clúster en la OU que necesitemos, algo que a día de hoy, con la cantidad de delegaciones de responsabilidad, subcontratación y descentralización en la que vivimos, se muestra muy efectivo y necesario.

Descripción de entorno:

Yendo un poco mas allá en términos de seguridad y simulando una situación bastante común. En esta ubicación remota donde montaríamos este clúster, ubicamos un RODC y tenemos un administrador que no puede ser más que administrador local de los nodos y  simple usuario de dominio. ¿Está complicado que este administrador monte un clúster en versiones anteriores a Windows Server 2012?, ¿verdad?.

No hace falta decir que ya que el departamento de seguridad se ha puesto duro. Como en muchas corporaciones tenemos una directiva que impide que los usuarios metan equipos en dominio y contando que nuestro usuario es administrador local y un simple usuario de dominio, nosotros como administradores de dominio vamos a crear una cuenta previamente para que, en el momento de crear el clúster, nuestro RODC ya la tenga.

Lo primero a tener en cuenta es que previo a la puesta en marcha del clúster, cuento con este entorno:

1. Active Directory con bosque 2012 y dominio 2012, pero en entradas anteriores (creación de RODC) ya visteis como este entorno soportaría tener funcionalidad 2003 teniendo eso si, al menos un DC 2008 y ejecutando la orden adprep /rodcprep.

2. Por hacerlo perfecto en terminos de seguridad, hemos hecho una OU donde tendremos las cuentas de equipo de los nodos, cuenta de equipo del clúster y un usuario al que llamamos ADMcluster que será con el que iniciemos sesión en los nodos para crear el clúster.

3. Aunque como os enseñaré en mi blog, el clúster ya se inicia sin necesidad de tener un DC a su alcance, hacemos miembros del grupo “Allowed Rodc Password…” al usuario ADMcluster, cuentas de equipo de los nodos y del clúster.

Paso a paso (pre requisitos):

1. Crear cuenta ADMCluster  e introducir la cuenta como administrador local en los 2 nodos del clúster, además de hacerle miembro de “Allowed RODC…”

clusterrodc1

2. Crear OU donde moveremos las cuentas de equipo de los nodos y crearemos una cuenta de equipo con el nombre que tendrá el clúster.

clusterrodc2

3.Tras crear la cuenta, botón derecho sobre la cuenta y elegir la opción “Deshabilitar”.

cuentadesactivada

4. Propiedades sobre la cuenta de equipo deshabilitada “Cluster”

clusterrodc4.3

5. A nuestro usuario ADMCluster, le damos control total sobre la cuenta.

 clusterrodc4.4

 

Montaje de clúster:

A continuación toca montar el clúster , en esto no voy a entrar en detalles obvios, en mi entorno tengo:

1. Tarjeta que hará de latido del clúster.

2. En mi caso cuento con las tarjetas Iscsi y asignada y formateada la Lun de Quorum y lun para futuro csv .

3. Tarjeta para Lan.

4. Activado el rol de Failover clúster en los dos nodos.

5. Como os he dicho antes, recalco que tenemos el usuario ADMcluster como administrador local en los dos equipos.

Tras tener todos los requisitos, la creación del clúster por parte del usuario ADMCluster no difiere de la creación de un clúster normal y corriente. Observad que al final del proceso la cuenta de clúster aparece como habilitada.

Tened en cuenta el funcionamiento de un RODC, quiero decir, mientras la línea entre el RODC y el DC de referencia esté levantada, todo funciona correctamente esté cacheada la cuenta de los diferentes usuarios y/o equipos o no. El problema viene cuando esta línea no está disponible. En esta situación solo podrán validarse contra el RODC usuarios y equipos cacheados y eso, lo tenéis que prever, por supuesto, cuando todo funciona.

Hay que tener en cuenta otra gran novedad. El servicio de clúster se levanta a pesar de no estar levantado el DC o el propio RODC pero esto nos viene muy bien cuando hospedamos máquinas virtuales, no siendo así cuando hospedamos servicios como file server que luego, al fin y al cabo no son accesibles si no se comprueban los permisos del usuario.

 

Saludos.

Categories: Cluster, Directorio Activo, Wserver2012 Tags:

Crear Read Only Domain Controller desde el propio servidor

martes, 28 de agosto de 2012 Sin comentarios

Hola.

En esta entrada, os publico los pantallazos del paso a paso que tenéis que seguir en Windows Server 2012 para crear un RODC estando siempre desde el lado servidor.

Al igual que en las entradas donde creábamos un controlador de dominio pre creado en AD, los requisitos son:

    • Nivel funcional del bosque 2003.
    • Al menos un controlador de dominio windows server 2008 entre los Dcs.
    • Si tienes un bosque y dominio 2003 con controlador de dominio windows server 2008, ya habrás ejecutado adprep /forestprep y adprep /domaiprep /gpprep, pero tendrás que ejecutar también adprep /rodcprep.
      Los requisitos para llevar a cabo la puesta en marcha tal y como la veis serían:
      1.  Contar con un controlador de dominio en mi caso windows server 2012.
      2.  Un servidor en workgroup

      3. Una cuenta de dominio, la cual a falta de información a respecto en la web de technet, se me antoja que debe ser administrador del dominio, ya que el mero permiso de tener permisos para crear cuentas en ad, no creo que sea suficiente.

      4. Iniciar y lanzar el proceso que veréis desde una cuenta administrador local el equipo.

    Respecto al despliegue, las capturas muestran claramente los pasos a seguir:

Cabe destacar que en la captura número 4, es donde debemos añadir los grupos de usuarios y/o equipos que queremos replicar a nuestro RODC y siguiendo el ejemplo de las anteriores entradas, nosotros añadimos un grupo creado por nosotros en el que estarían nuestros teóricos usuarios administradores locales del RODC.

 

rodccli1rodccli2

rodccli3rodccli4rodccli6rodccli7rodccli8rodccli9

Categories: Directorio Activo, Wserver2012 Tags:

Crear Read Only Domain Controller contando con cuentra pre creada en AD

martes, 28 de agosto de 2012 Sin comentarios

 

Hola.

Esta entrada es la continuación de esta entrada anterior:

http://blogs.itpro.es/mhernandez/2012/08/28/pre-crear-en-a-d-y-crear-posteriormente-read-only-domain-controller/

Para continuar con la creación del Read Only Domain Controller, debéis contar con:

1. Servidor ubicadao en el site indicado previamente.

2.Nombre de servidor cambiado, este ha de tener el mismo nombre que habíamos indicado en la creación de la cuenta pre creada en AD.

3.Usuario administrador local, pero no necesariamente administrador del dominio.

Si contáis con los requisitos dispuestos anteriormente, continuamos.

Captura 6: Lanzáis de esta u otra forma el proceso de creación de un Controlador de Dominio en Windows Server 2012.  (Perdonad que empiece por la última, pero no consigo que el editor de WordPress la situe la primera de ellas.).

Captura 1:  Añadir un controlador de dominio a un dominio existente.

Captura 2: Solo por indicar que queréis crear un RODC y él, comprobar que con ese nombre ya existe una cuenta en AD, no os preguntará nada más significativo ya que todo lo indicasteis en la creación de la cuenta.

Resto de capturas: Podéis ver que las preguntas se pueden obviar y continuar avanzando hasta la finalización. Quizá cabe destacar la captura 3, donde nos pregunta de qué DC queremos replicar y a falta de acceso a alguno de ellos, si tenemos un almacenamiento externo donde preparamos la información para la primera réplica.

 

Pre crear en A.D. y crear posteriormente Read Only Domain Controller

martes, 28 de agosto de 2012 Sin comentarios

Hola.

A ver si me aclaro creando entradas en esta nueva ubicación :).

Aunque se podría decir que esta es una entrada independiente a las entrabas que vendrán. Se puede decir que todas ellas conformarán un todo, ya que aunque mi intención final es enseñaros algunas de las novedades en cuanto a clústering, la más importante y a mí particularmente, la que más me gusta es la nueva relación que se puede establecer entre este y un Read Only Domain Controller como controlador de dominio de referencia.

Por tanto y dando por supuesto que hablamos a partir de un nivel 300 más o menos, partimos de un entorno donde ya tenemos un controlador de dominio y servidor DNS, en el cual siguiendo las pantallas que comentaré a continuación y podéis ver al final del artículo, pre crearéis (si se me permite la expresión) una cuenta, por el momento, deshabilitada que será nuestro Rodc.

La opción que seguiremos en este artículo es una de las formas de creación de un RODC posibles, ya que en un artículo posterior, crearemos un RODC utilizando exclusivamente el servidor miembro sin necesidad de pre crear la cuenta. Las dos opciones posibles quedan a vuestra elección, ya que según el caso, encontraréis ventajas e inconvenientes que en algunos casos os hará inclinaros por la más adecuada, por ejemplo, si el administrador que tiene que levantar el RODC no es ni puede ser administrador del dominio y simplemente queréis que sea administrador local de los servidores, la opción que tenéis que usar es la que detallaremos en este y el siguiente artículo. En cambio, si queréis ser lo más rápidos posibles y pretendéis montar el entorno con el menor número de pasos y tiempo necesarios, como administradores del dominio diréctamente podéis crear un RODC desde el propio servidor nuevo, para lo cual tenéis que leer el artículo que titularé «Crear Read Only Domain Controller desde el propio servidor».

Los requisitos son:

  • Nivel funcional del bosque 2003.
  • Almenos un controlador de dominio windows server 2008 entre los Dcs.
  • Si tienes un bosque y dominio 2003 con controlador de dominio windows server 2008, ya habrás ejecutado adprep /forestprep y adprep /domaipre /gpprep, pero tendrás que ejecutar también adprep /rodcprep

 

Captura 1: Creamos el grupo»RodcAdministradoresLocales», el cual utilizaremos como ejemplo para ver como añadir grupos de usuarios y equipos que se permite la replicación de su información (password principalmente) al Rodc. Gracias a esto, los usuarios de este grupo podrán validarse en sus equipos aunque el RODC pierda comunicación con el/los DCs estandares.

Captura 2: Botón derecho sobre la OU de Domain Controlles y elegimos la opción «Pre – Create Read Only Domain Controller…»

Captura 3, 4, 5, 6 y 7: Son bastante obvias, destacar si cabe al terminar la 7ª habremos elegido el nombre del Rodc, site donde se ubicará y si el servidor hará de servidor DNS catálogo global.

Captura 8 y 9: En esta captura veréis los grupos de usuario y / o equipos que por defecto podrán o no replicar su información al RODC en curso, en la pantalla 9 añadimos el grupo que hemos hecho en el paso 1, como grupo permitido.

Captura 10 y 11: Finalizamos el proceso.

Tras ello podréis ver la cuenta como deshabilitada en la OU de Controladores de dominio de vuestro directorio activo.

 

 

 

 

Categories: Directorio Activo, Wserver2012 Tags:

>Desactivar "Reply All"

miércoles, 30 de septiembre de 2009 1 comentario

>Hola.

No es el final de todos nuestros males, pero diría que en gran parte si lo es.

El equipo de Exchange ha colgado un post de imprescindible lectura para todos nosotros, nos explican como desactivar la opción de «Responder a todos» de Outlook por gpo.

http://msexchangeteam.com/archive/2009/09/29/452689.aspx Parte 1.
http://msexchangeteam.com/archive/2009/09/30/452724.aspx Parte2

«Reply-All Storms» nunca mejor dicho.

Categories: Directorio Activo, Exchange, Outlook Tags:

>¿Varias políticas de contraseñas en el mismo dominio?

sábado, 1 de noviembre de 2008 Sin comentarios

>Pues sí, algunos ya lo sabéis y otros ya lo habréis oido. Con windows server 2008 podemos tener diferentes políticas de contraseñas en el mismo dominio, la explicación en video y aquí:

http://technet.microsoft.com/en-us/windowsserver/2008/bb896051.aspx

Saludos.

Categories: Directorio Activo, politicas, seguridad Tags:

>Blog de equipo de soporte de Windows

domingo, 12 de octubre de 2008 Sin comentarios
Categories: Directorio Activo, Hyper-V, Soporte Tags:

>Desastre en controlador de dominio con Exchange 2003

viernes, 18 de julio de 2008 1 comentario

>Hola.

Me ha llegado hoy una incidencia sobre un desastre de un controlador de dominio, que además era el servidor de correo de la organización. Ante un desastre así, lo mejor es echar mano de la documentación y pensar ¿a quien le ha podido pasar ya?, en internet he recopilado información que puede ser de ayuda para solucionar este estropicio, pero creo es en estos casos donde está sobrádamente justificada la cuota de 250€ +/- por tener soporte en Microsoft.

Cómo quitar por completo huérfano controlador de dominio http://support.microsoft.com/kb/555846/es
Una vez limpio el Ad de los restos que quedaron del controlador de dominio que ya no estará y asumidos los roles por otro controlador de dominio, se trata de instalar un windows 2003 nuevecito y promocionarlo como controlador de dominio y catálogo globa, hecho esto, la guía siguiente nos ayudará a instalar Exchange 2003 en una organización donde ya había uno anteriormente.
Por ejemplo, si no se tiene copia de seguridad, en las páginas 207, 208 explican como:
Cómo reparar un servidor miembro

Si se tiene copia de seguridad la guía explica como:

Copiar y restaurar en el caso de ser un servidor miembro

Copia y restaurar en el caso de ser un servidor controlador de dominio

En el caso de tener que recuperar una copia de seguridad de Exchange realizada con Ntbackup, el organigrama siguiente os va a venir muy bien:

Categories: desastres, Directorio Activo, Exchange Tags:

>Como funciona la replicación de Active Directory

martes, 6 de mayo de 2008 Sin comentarios

>Vale está en inglés, es largo y mogollón de friki, por eso me ha costado unos cuantos ratos leerlo y ya veremos cuando consigo comprenderlo al detalle, pero por si también os pica la curiosidad os lo paso.

Muy pero que muy buena explicación de como funciona la replicación de AD. ( al menos en 2000 y 2003 Server):
http://blogs.technet.com/asksbs/archive/2008/03/28/troubleshooting-active-directory-replication.aspx

Categories: 2003 server, Directorio Activo Tags: