Hallo zusammen,
es kommt immer wieder vor, dass ein PST Postfach Export durchgeführt werden muss, bei dem der UPN nicht der Email Adresse entspricht. Gerade in einer cloudlastigen Zeit wird erwartet, dass der UPN der email Adresse entspricht um Benutzer beispielsweise ein single sign on für diverse Dienste anbieten zu können.
Warum nun dieses Script, es gab die Anforderung dass für eine Exchange Cross Forest Migration die Postfächer in PST Dateien exportiert wurden und diese dann automatisiert über ein Import Script in der Ziel Seite wieder importiert wurden. In der Zielseite wurde allerdings der UPN der Email Adresse gleichgesetzt. Das unten stehenden Script zieht sich nun anhand das AD Benutzer die Email Adresse und schreibt die Email Adresse in den Dateinamen rein um eine eindeutige Identifikation des Postfachs zu erhalten. Das Script funktioniert ab der Version Exchange 2010.
### PST Export für O365 Import bei unterschiedlichem UPN zu Email Adresse
#import-module activedirectory
#Add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010
$Workload = "Exchange"
$Archiv = "FALSE"
$TargetRootFolder = "/"
$Date = (Get-Date).ToString('MM-dd-yyyy-HH-mm-ss')
$BasePath = "\\servername\g$\archive"
$ExportPath = $BasePath +"PSTs-" +$Date + "\"
$OutputFile = $BasePath +"Mailbox-O365" +"-" +$Date +".csv"
$ResultSize = 1000 #"unlimited"
$FilesCSV = @()
$CSVImportPath = "c:\temp\Migrationsliste.csv"
$UPN = @()
$Mbxsrollout = @()
Add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010
New-Item -ItemType directory -Path $ExportPath -ErrorAction SilentlyContinue
#get-mailbox -OrganizationalUnit $OU
#CSV (Es muss "Kein CSV" oder "CSV" aktiv sein! Nie Beide!)
$FilesCSV += Import-Csv $CSVImportPath
#$Mbxsrollout = $FilesCSV
$FilesCSV
#$FilesCSV.count
foreach ($object in $FilesCSV) {
#$WEA = $object.WindowsEmailAddress
write-host "$object.WindowsEmailAddress in Bearbeitung"
#$Mbxsset = Get-ADUser -Filter "UserPrincipalName -Eq '$WEA'" -Properties *
$Mbxsrollout += get-mailbox -Identity $object.WindowsEmailAddress
#$Mbxsrollout
}
#$Mbxsrollout | select *name*
#$Mbxsrollout.count
#$FilesCSV.count
#$Mbxsrollout.count
#$Mbxsrollout
$Files = $Mbxsrollout | Select-Object @{label="Workload";expression={$Workload}}, @{label="FilePath";expression={$FilePath}}, @{label="Name";expression={($_.WindowsEmailAddress.ToString() + ".pst")}}, @{label="Mailbox";expression={($_.PrimarySmtpAddress)}}, @{label="IsArchive";expression={($Archiv)}},@{label="TargetRootFolder";expression={($TargetRootFolder)}},@{label="SPFileContainer";expression={("")}},@{label="SPManifestContainer";expression={("")}},@{label="SPSiteUrl";expression={("")}}
$Files | Export-Csv $OutputFile -NoTypeInformation -Delimiter ","
#$Files
#Kein CSV (Es muss "Kein CSV" oder "CSV" aktiv sein! Nie Beide!)
#$Files = get-mailbox -ResultSize $ResultSize -OrganizationalUnit $OU | Select-Object @{label="Workload";expression={$Workload}}, @{label="FilePath";expression={$FilePath}}, @{label="Name";expression={($_.Name + ".pst")}}, @{label="Mailbox";expression={($_.PrimarySmtpAddress)}}, @{label="IsArchive";expression={($Archiv)}},@{label="TargetRootFolder";expression={($TargetRootFolder)}},@{label="SPFileContainer";expression={("")}},@{label="SPManifestContainer";expression={("")}},@{label="SPSiteUrl";expression={("")}}
#$Files | Export-Csv $OutputFile -NoTypeInformation -Delimiter ","
#$Files
foreach ($MB in $Files){
#[String]$MBName = $MB.Mailbox.local + "@" +$MB.Mailbox.Domain
#[String]$MBName = $MB.Mailbox.local + "@" +$MB.Mailbox.Domain
#[String]$MBName
#$MB.Mailbox
New-MailboxExportRequest -BadItemLimit 1000 -AcceptLargeDataLoss -mailbox $MB.Mailbox.ToString() -Domaincontroller %DomainController% -FilePath $ExportPath\$($MB.Name)
}
Write-Output "Der Pfad für den Folgeschritt Import lautet: " $ExportPath
Write-Output "`nDie zugehörige PST-Importzuordnungsdatei wurde hier abgelegt: " $OutputFile
#Skript erwartet bei CSV-Datei als Header: ("# " am Anfang beim Kopieren entfernen)
# #TYPE Selected.Microsoft.Exchange.Data.Directory.Management.Mailbox
# "WindowsEmailAddress"
viele Grüße, Jens
Keine Kommentare:
Kommentar veröffentlichen