メールインデータベースをNotesからExchangeに移行した後、メールは正しいフォルダに配置されませんでした。 フォルダは存在しますが空ですが、メールは「すべての文書」フォルダからのみ表示されます。 構造を正しくマイグレーションされたdbコピーと比較し、フォルダの内容を復元したいのですが... メールボックスの "All Documents"フォルダにアクセスする必要があります。 「Wellknown Folder names」列挙型には含まれていませんか?PowerShell/EWS経由でExchange 2013のすべてのドキュメントフォルダにある電子メールにアクセスする方法は?
0
A
答えて
0
これは、使用した移行アプリケーションが作成したフォルダまたはhttp://blog.directionstraining.com/microsoft-outlook/creating-documents-view-outlookのようなものを使用して、その動作を模倣する検索フォルダを作成するために、Exchange(AFAIKは注意事項)にAl lDocumentsフォルダはありません。それで、答えに応じて、あなたが使う方法は本当に基本的なGet-Folder from Path(パスはルートからの場所に基づいています。例えばAll Documentsがルートフォルダだった場合は '\ All Documents'フォルダがで作成されている - すべてのドキュメントは、あなたが「\受信トレイ\すべてのドキュメント」など
#######################
<#
.SYNOPSIS
Enumerates Items in a Mailbox folder in a Mailbox using the Exchange Web Services API
.DESCRIPTION
Enumerates Items in a Mailbox folder in a Mailbox using the Exchange Web Services API
Requires the EWS Managed API from https://www.microsoft.com/en-us/download/details.aspx?id=42951
.EXAMPLE
PS C:\>Get-FolderItems -MailboxName [email protected] -FolderPath '\Reporttest'
#>
function Get-FolderItems
{
[CmdletBinding()]
param(
[Parameter(Position=0, Mandatory=$true)] [string]$MailboxName,
[Parameter(Position=1, Mandatory=$true)] [PSCredential]$Credentials,
[Parameter(Position=2, Mandatory=$true)] [string]$FolderPath
)
Begin
{
## Load Managed API dll
###CHECK FOR EWS MANAGED API, IF PRESENT IMPORT THE HIGHEST VERSION EWS DLL, ELSE EXIT
$EWSDLL = (($(Get-ItemProperty -ErrorAction SilentlyContinue -Path Registry::$(Get-ChildItem -ErrorAction SilentlyContinue -Path 'Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Exchange\Web Services'|Sort-Object Name -Descending| Select-Object -First 1 -ExpandProperty Name)).'Install Directory') + "Microsoft.Exchange.WebServices.dll")
if (Test-Path $EWSDLL)
{
Import-Module $EWSDLL
}
else
{
"$(get-date -format yyyyMMddHHmmss):"
"This script requires the EWS Managed API 1.2 or later."
"Please download and install the current version of the EWS Managed API from"
"http://go.microsoft.com/fwlink/?LinkId=255472"
""
"Exiting Script."
exit
}
## Set Exchange Version
$ExchangeVersion = [Microsoft.Exchange.WebServices.Data.ExchangeVersion]::Exchange2010_SP2
## Create Exchange Service Object
$service = New-Object Microsoft.Exchange.WebServices.Data.ExchangeService($ExchangeVersion)
## Set Credentials to use two options are availible Option1 to use explict credentials or Option 2 use the Default (logged On) credentials
#Credentials Option 1 using UPN for the windows Account
#$psCred = Get-Credential
$creds = New-Object System.Net.NetworkCredential($Credentials.UserName.ToString(),$Credentials.GetNetworkCredential().password.ToString())
$service.Credentials = $creds
#Credentials Option 2
#service.UseDefaultCredentials = $true
#$service.TraceEnabled = $true
## Choose to ignore any SSL Warning issues caused by Self Signed Certificates
## Code From http://poshcode.org/624
## Create a compilation environment
$Provider=New-Object Microsoft.CSharp.CSharpCodeProvider
$Compiler=$Provider.CreateCompiler()
$Params=New-Object System.CodeDom.Compiler.CompilerParameters
$Params.GenerateExecutable=$False
$Params.GenerateInMemory=$True
$Params.IncludeDebugInformation=$False
$Params.ReferencedAssemblies.Add("System.DLL") | Out-Null
[email protected]'
namespace Local.ToolkitExtensions.Net.CertificatePolicy{
public class TrustAll : System.Net.ICertificatePolicy {
public TrustAll() {
}
public bool CheckValidationResult(System.Net.ServicePoint sp,
System.Security.Cryptography.X509Certificates.X509Certificate cert,
System.Net.WebRequest req, int problem) {
return true;
}
}
}
'@
$TAResults=$Provider.CompileAssemblyFromSource($Params,$TASource)
$TAAssembly=$TAResults.CompiledAssembly
## We now create an instance of the TrustAll and attach it to the ServicePointManager
$TrustAll=$TAAssembly.CreateInstance("Local.ToolkitExtensions.Net.CertificatePolicy.TrustAll")
[System.Net.ServicePointManager]::CertificatePolicy=$TrustAll
## end code from http://poshcode.org/624
## Set the URL of the CAS (Client Access Server) to use two options are availbe to use Autodiscover to find the CAS URL or Hardcode the CAS to use
#CAS URL Option 1 Autodiscover
$service.AutodiscoverUrl($MailboxName,{$true})
"Using CAS Server : " + $Service.url
#CAS URL Option 2 Hardcoded
#$uri=[system.URI] "https://casservername/ews/exchange.asmx"
#$service.Url = $uri
## Optional section for Exchange Impersonation
#$service.ImpersonatedUserId = new-object Microsoft.Exchange.WebServices.Data.ImpersonatedUserId([Microsoft.Exchange.WebServices.Data.ConnectingIdType]::SmtpAddress, $MailboxName)
$fldId = FolderIdFromPath -FolderPath $FolderPath -SmtpAddress $MailboxName
$SubFolderId = new-object Microsoft.Exchange.WebServices.Data.FolderId($fldId)
#Define ItemView to retrive just 1000 Items
$ivItemView = New-Object Microsoft.Exchange.WebServices.Data.ItemView(1000)
$PR_RETENTION_DATE = New-Object Microsoft.Exchange.WebServices.Data.ExtendedPropertyDefinition(0x301C,[Microsoft.Exchange.WebServices.Data.MapiPropertyType]::SystemTime);
$ItemPropset= new-object Microsoft.Exchange.WebServices.Data.PropertySet([Microsoft.Exchange.WebServices.Data.BasePropertySet]::FirstClassProperties)
$ItemPropset.Add($PR_RETENTION_DATE);
$ivItemView.PropertySet = $ItemPropset
$rptCollection = @{}
$fiItems = $null
do{
$fiItems = $service.FindItems($SubFolderId,$ivItemView)
#[Void]$service.LoadPropertiesForItems($fiItems,$psPropset)
foreach($Item in $fiItems.Items){
#Process Item
Write-Host $Item.Subject
}
$ivItemView.Offset += $fiItems.Items.Count
}while($fiItems.MoreAvailable -eq $true)
}
}
function FolderIdFromPath{
param (
$FolderPath = "$(throw 'Folder Path is a mandatory Parameter')",
$SmtpAddress = "$(throw 'Folder Path is a mandatory Parameter')"
)
process{
## Find and Bind to Folder based on Path
#Define the path to search should be seperated with \
#Bind to the MSGFolder Root
$folderid = new-object Microsoft.Exchange.WebServices.Data.FolderId([Microsoft.Exchange.WebServices.Data.WellKnownFolderName]::MsgFolderRoot,$SmtpAddress)
$tfTargetFolder = [Microsoft.Exchange.WebServices.Data.Folder]::Bind($service,$folderid)
#Split the Search path into an array
$fldArray = $FolderPath.Split("\")
#Loop through the Split Array and do a Search for each level of folder
for ($lint = 1; $lint -lt $fldArray.Length; $lint++) {
#Perform search based on the displayname of each folder level
$fvFolderView = new-object Microsoft.Exchange.WebServices.Data.FolderView(1)
$SfSearchFilter = new-object Microsoft.Exchange.WebServices.Data.SearchFilter+IsEqualTo([Microsoft.Exchange.WebServices.Data.FolderSchema]::DisplayName,$fldArray[$lint])
$findFolderResults = $service.FindFolders($tfTargetFolder.Id,$SfSearchFilter,$fvFolderView)
if ($findFolderResults.TotalCount -gt 0){
foreach($folder in $findFolderResults.Folders){
$tfTargetFolder = $folder
}
}
else{
"Error Folder Not Found"
$tfTargetFolder = $null
break
}
}
if($tfTargetFolder -ne $null){
return $tfTargetFolder.Id.UniqueId.ToString()
}
else{
throw "Folder not found"
}
}
}
乾杯 グレン
関連する問題
- 1. Microsoft Exchange経由で電子メールを送信
- 2. Laravel - Exchange Server経由で電子メールを送信
- 3. 実サーバ(SendGrid)経由で電子メールを送信する方法
- 4. UWP 10アプリ経由で電子メールを送信する方法
- 5. FirebaseのUID経由で電子メールを受け取る方法
- 6. IIS7経由で電子メールを送信するには?
- 7. Concourse CIパイプライン経由で電子メールを送信するには?
- 8. perl経由でUSB接続の電話にアクセスする方法
- 9. MVCを使用してコントローラ経由で電子メールを送信する方法
- 10. CloudMagicがoffice365電子メールにアクセスするのをブロックする方法は?
- 11. 電子メールサーバから電子メールにアクセスしてデータベースに保存する方法
- 12. Gmail経由のRedmine電子メール通知
- 13. プロキシ経由で電子メールを送信
- 14. SendGrid経由で電子メールを受信
- 15. 電子メール変数の電子メール経由でoutlookへのリストビューの内容
- 16. Railsアプリケーションでamazon SES経由で電子メールを送信する方法
- 17. OutlookなしでVBA経由で電子メールを送信する方法
- 18. ウェブブラウザ経由で電子メールにアクセスする際に使用されるプロトコルは何ですか?
- 19. Exchange経由の電子メール:既存の接続がリモートホストによって強制的にクローズされました
- 20. 私のiPhoneアプリケーション経由で、計画された電子メールを送信する方法と、電子メールアプリケーションを起動する方法はありますか?
- 21. PowershellでPOP3/IMAP経由で電子メールを削除する
- 22. zohoメールでホストされている電子メールをlaravel経由で送信する方法
- 23. 電子メールでMySQLデータベースにアクセスする
- 24. POP経由でユーザーに送信された電子メールにアクセスすることは可能ですか?
- 25. 電子メールの本文内のhtml電子メールにヘッダーを設定する方法はありますか?
- 26. GRAPH API経由で電子メール通知を送信する
- 27. sql電子メール経由でPDf添付ファイルを送信する
- 28. ノードWebkit - Outlook経由で電子メールを送受信する
- 29. ログバック:AWS SNS経由で電子メールを送信するエラー
- 30. gmail経由で電子メールを送信する場合
こんにちはグレン、あなたは正しい使用する受信トレイのサブフォルダたフォルダましたDell Migrator ...それでも、これは私にとって完璧な答えです。 – AOhlendorf