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