.NET + Powershell + Exchange 2007

21 04 2010

Hace poco hice un programa con Visual Studio 2008 en Visual Basic .Net. Este programa entre otras muchas cosas crea buzones a usuarios en Exchange 2007. Esto me trajo de cabeza durante varios días, ya que en la versión 2007  toda la gestión se realiza mediante PorwerShell, lo cual facilita mucho el trabajo, a no ser que, como en mi caso, estés programando en VB.

Busqué información en la web Microsoft y seguí los pasos que indicaban sobre como ejecutar cmdlets PowerShell en VB, pero aún así seguía sin funcionar.

Finalmente conseguí mi objetivo siguiendo los siguientes pasos:

  • Agregar Referencias

Agrega una referencia al assembly System.Management.Automation.dll. De forma predeterminada, este assembly se instala en C:\Archivos de programa\Reference Asambleas\Microsoft\WindowsPowerShell\v1.0\ . Después de hacer referencia al assembly, agrega las instrucciones siguientes al código:

        Imports System.Management.Automation
        Imports System.Management.Automation.Host
        Imports System.Management.Automation.Runspaces
        Imports System.Collections.ObjectModel
  • Procedimiento ejecución comandos powershell

En mi código, creé un procedimiento el cual recibe el comando a ejecutar mediante una variable. Dicho procedimiento es este:

Private Sub RunScript(ByVal scriptText As String)
   ' Crear runspace Powershell
   Dim MyRunSpace As Runspace = RunspaceFactory.CreateRunspace()
   ' Lo abrimos
   MyRunSpace.Open()
   ' Crear un pipeline (tuberia) y asignarle el script mediante la variable scriptText
   Dim MyPipeline As Pipeline = MyRunSpace.CreatePipeline()
   MyPipeline.Commands.AddScript(scriptText)
   ' Ejecutamos el script
   Dim results As Collection(Of PSObject) = MyPipeline.Invoke()
   ' Se cierra el runspace
   MyRunSpace.Close()
   ' Se convierte el resultado del script en una unica cadena
   Dim MyStringBuilder As New StringBuilder()
   For Each obj As PSObject In results
   MyStringBuilder.AppendLine(obj.ToString())
   Next
End Sub

Donde la variable scriptText tiene asignado como valor el comando en cuestión, en mi caso el de creación de buzones:

scripText = "New-Mailbox -Name " & NombreyApellidos & " -Database " & Server & "\" & StorageGroup & "\" & MDBName & " -Password (convertto-securestring " & passwd & " -asplaintext -force) -UserPrincipalName " & login & "@" & ServerMail & " -Alias " & email & " -OrganitationalUnit " & Vinalopo & strContainer & " -SamAccountName " & login & " -FirstName " & strUser & " -Initial '' -LastName " & strApellido

Espero haberme explicado bien….

Anuncios




IIS 7 + PHP + MySQL

10 12 2009

Visto que hay gente que tiene problemas a la hora de hacerlo funcionar en condiciones, y dado que yo mismo he estado peleando con ello esta semana, dejo algunas aclaraciones al respecto que espero que sirvan de ayuda. Por supuesto, si alguien tiene alguna duda que no dude en preguntarme e intentaré ayudarle en la medida de lo posible ( y de mis conocimientos… 😉 )

Lee el resto de esta entrada »