miércoles, 23 de septiembre de 2015

Formulario Powershell para alta de usuarios (parte 2/3)


Ahora empieza lo interesante. Vamos a buscar dentro de nuestro servidor de exchange (que tenemos hemos almacenado antes en la constante $mailboxserver )y escoger en que base de datos queremos crear el nuevo buzón. Para listar las bases de datos, usaremos el comando get-mailboxes y el listado obtenido lo presentaremos en una ListBox igual que la que hemos creado para seleccionar el entorno: 

# Add Mailbox Database ==================================
$objLabelMailDatabase = New-Object System.Windows.Forms.Label
$objLabelMailDatabase.Location = New-Object System.Drawing.Size(50,290)
$objLabelMailDatabase.Size = New-Object System.Drawing.Size(180,20)
$objLabelMailDatabase.Text = "Selecciona una base de datos:"
$objForm.Controls.Add($objLabelMailDatabase)
$objMailDatabaseListbox = New-Object System.Windows.Forms.Listbox
$objMailDatabaseListbox.Location = New-Object System.Drawing.Size(50,310)
$objMailDatabaseListbox.Size = New-Object System.Drawing.Size(150,400)
$objForm.Controls.Add($objMailDatabaseListbox)
$mailDatabases = Invoke-Expression "get-mailboxdatabase -server $mailboxserver | sort-object Name"
foreach ($mailDatabase in $mailDatabases)
{
      [void] $objMailDatabaseListbox.Items.Add($mailDatabase.Name)
}
Para seleccionar la plantilla necesitamos tener estas creadas en una OU del Active Directory, que hemos definido como constante al principio. Estas plantillas no son otra cosa que usuarios de AD con los grupos a los que deben pertenecer segun su entorno y departamento. Estas plantillas se pueden crear y modificar directamente sobre el Active Directory sin tener que hacer modificaciones en el script del formulario. 

El código seria el siguiente: 

# Add Groups from Template =================================
$objLabelUserTemplate = New-Object System.Windows.Forms.Label
$objLabelUserTemplate.Location = New-Object System.Drawing.Size(250,290)
$objLabelUserTemplate.Size = New-Object System.Drawing.Size(180,20)
$objLabelUserTemplate.Text = "Selecciona una plantilla:"
$objForm.Controls.Add($objLabelUserTemplate)
$objUserTemplateListbox = New-Object System.Windows.Forms.Listbox
$objUserTemplateListbox.Location = New-Object System.Drawing.Size(250,310)
$objUserTemplateListbox.Size = New-Object System.Drawing.Size(150,400)
$objForm.Controls.Add($objUserTemplateListbox)
$userTemplates = get-AdUser -Filter * -SearchBase $templateBase
foreach ($userTemplate in $userTemplates)
{
      [void] $objUserTemplateListbox.Items.Add($userTemplate.SamAccountName)
}

Lo que hace el código es leer los usuarios de la OU (en la constante $templateBase) y listarlo en un textbox.

El resultado es el siguiente: 


En este caso los objetos de Base de Datos de Exchange y Plantillas no muestran datos. Pero en un entorno consulando a servidores reales el resultado es este:


Los siguientes elementos que definiremos son los Check Box y los usaremos para definir que funciones queremos habilitar de el nuevo usuario que estamos creando.

# Add ActiveDirectory CheckBox
$objADCheckbox = new-object System.Windows.Forms.checkbox
$objADCheckbox.Location = new-object System.Drawing.Size(450,290)
$objADCheckbox.Size = new-object System.Drawing.Size(200,20)
$objADCheckbox.Text = "Crear Usuario AD"
$objADCheckbox.Checked = $false
$objForm.Controls.Add($objADCheckbox)  
 
# Add Exchange CheckBox
$objMailCheckbox = new-object System.Windows.Forms.checkbox
$objMailCheckbox.Location = new-object System.Drawing.Size(450,310)
$objMailCheckbox.Size = new-object System.Drawing.Size(200,20)
$objMailCheckbox.Text = "Habilitar Mailbox"
$objMailCheckbox.Checked = $false
$objForm.Controls.Add($objMailCheckbox)
 

# Add Group CheckBox
$objGroupCheckbox = new-object System.Windows.Forms.checkbox
$objGroupCheckbox.Location = new-object System.Drawing.Size(450,330)
$objGroupCheckbox.Size = new-object System.Drawing.Size(200,20)
$objGroupCheckbox.Text = "Habilitar "
$objGroupCheckbox.Checked = $false
$objForm.Controls.Add($objGroupCheckbox)  
# Add Lync CheckBox
$objLyncCheckbox = new-object System.Windows.Forms.checkbox
$objLyncCheckbox.Location = new-object System.Drawing.Size(450,350)
$objLyncCheckbox.Size = new-object System.Drawing.Size(200,20)
$objLyncCheckbox.Text = "Habilitar Lync"
$objLyncCheckbox.Checked = $false
$objForm.Controls.Add($objLyncCheckbox)  

Con este codigo solo añadimos los checkbox en el formulario. Estos checkbox los marcaremos para confirmar si queremos crear el usuario del AD, si queremos que habilitar el buzon de Exchange, añadir los grupos de la plantilla o habilitar las funciones de Lync.




Parte 3/3

No hay comentarios:

Publicar un comentario