1

Outlook から PST ファイルを切断するスクリプトを作成しようとしています。

私はこのようなもので試してきました:

$Outlook = new-object -com outlook.application 
$Namespace = $Outlook.getNamespace("MAPI")

$PSTtoDelete = "c:\test\pst.pst"

$Namespace.RemoveStore($PSTtoDelete)

次のエラーが表示されます。

「「RemoveStore」と引数カウント「1」のオーバーロードが見つかりません。

これで別のソリューションも試しました(ここにあります http://www.mikepfeiffer.net/2013/04/how-to-test-outlook-pst-personal-folder-file-access-with-powershell/):

$namespace.GetType().InvokeMember('RemoveStore',[System.Reflection.BindingFlags]::InvokeMethod,$null,$namespace,($PSTFolder))

私はテクネクトのドキュメントを見て、正しく理解していれば、RemoveStore メソッドにはフォルダーが必要です。

誰かが私にこれについてのヒントを与えることができれば、それは大歓迎です!

ありがとう!

4

2 に答える 2

2

リンクによると、スクリプトはパスではなく、接続された PST の名前を想定しています。これを試して:

$Outlook = new-object -com outlook.application 
$Namespace = $Outlook.getNamespace("MAPI")

$PSTtoDelete = "c:\test\pst.pst"
$PST = $namespace.Stores | ? {$_.FilePath -eq $PSTtoDelete}
$PSTRoot = $PST.GetRootFolder()


$PSTFolder = $namespace.Folders.Item($PSTRoot.Name)
$namespace.GetType().InvokeMember('RemoveStore',[System.Reflection.BindingFlags]::InvokeMethod,$null,$namespace,($PSTFolder))
于 2014-06-05T11:53:27.527 に答える