Imports Microsoft.MetadirectoryServices Imports System.Management.Automation Imports System.Management.Automation.Host Imports System.Management.Automation.Runspaces
Public Class MACallExport    Implements IMAExtensibleFileImport    Implements IMAExtensibleCallExport
   Public Sub GenerateImportFile(ByVal filename As String, ByVal connectTo As String, ByVal user As String, ByVal password As String, ByVal configParameters As ConfigParameterCollection, ByVal fullImport As Boolean, ByVal types As TypeDescriptionCollection, ByRef customData As String) Implements IMAExtensibleFileImport.GenerateImportFile        Dim config As RunspaceConfiguration = RunspaceConfiguration.Create()        Dim pscmd As String        Dim pipeLine As Pipeline        Dim warning As PSSnapInException = Nothing
       'Add Exchange snapin to config.        config.AddPSSnapIn("Microsoft.Exchange.Management.PowerShell.Admin", warning)        If warning IsNot Nothing Then            Throw New Exception(warning.Message)            Return        End If        Dim myRunSpace As Runspace = RunspaceFactory.CreateRunspace(config)        myRunSpace.Open()
       'Generate User List        pscmd = "get-user -OrganizationalUnit 'ou=Users,ou=MyOrg,dc=mydomain2,dc=ch' " _                & "-DomainController dc.mydomain2.ch " _                & "| export-csv '" & filename & "' " _                & "-notypeinformation"
       Pipeline = myRunSpace.CreatePipeline(pscmd)        Pipeline.Invoke()
       myRunSpace.Close()    End Sub
   Public Sub BeginExport(ByVal connectTo As String, ByVal user As String, ByVal password As String, ByVal configParameters As ConfigParameterCollection, ByVal types As TypeDescriptionCollection) Implements IMAExtensibleCallExport.BeginExport    End Sub
   Public Sub ExportEntry(ByVal modificationType As ModificationType, ByVal changedAttributes As String(), ByVal csentry As CSEntry) Implements IMAExtensibleCallExport.ExportEntry        Dim config As RunspaceConfiguration = RunspaceConfiguration.Create()        Dim pscmd As String        Dim pipeLine As Pipeline        Dim warning As PSSnapInException = Nothing
       'Add Exchange snapin to config.        config.AddPSSnapIn("Microsoft.Exchange.Management.PowerShell.Admin", warning)        If warning IsNot Nothing Then            Throw New Exception(warning.Message)            Return        End If        Dim myRunSpace As Runspace = RunspaceFactory.CreateRunspace(config)        myRunSpace.Open()
       If modificationType = Microsoft.MetadirectoryServices.ModificationType.Replace AndAlso csentry("RecipientType").Value = "UserMailbox" Then            pscmd = "enable-mailbox -identity '" & csentry("DistinguishedName").Value _                    & "' -database 'exchserver.mydomain2.ch\Mailbox Database' " _                    & "-DomainController dc.mydomain2.ch "
           pipeLine = myRunSpace.CreatePipeline(pscmd)            pipeLine.Invoke()        End If
       myRunSpace.Close()
   End Sub
   Public Sub EndExport() Implements IMAExtensibleCallExport.EndExport    End Sub End Class