2016-09-14 9 views
2

私は、Outlookフォルダの内容を読み、未読の電子メールを見つけて処理し、別のフォルダに移動するスクリプトをPS 4に作成しました。このスクリプトはPS 5が私のワークステーションにプッシュされるまでうまくいった。今、私は次のエラーを取得する:PowerShell 5のOutlookフォルダへのアクセス

Error while invoking [PROPERTYGET, DISPID(0)]. Could not find member. 
At U:\Powershell\Scripts\Outlook - Process Emails.ps1:214 char:7 
+  $($folger.Items)[$i].Subject 
+  ~~~~~~~~~~~~~~~~~~~ 
    + CategoryInfo   : OperationStopped: (:) [], MissingMemberException 
    + FullyQualifiedErrorId : System.MissingMemberException 

は、ここでは、コードの主なブロックです:

Add-Type -assembly "Microsoft.Office.Interop.Outlook" 
$Outlook = New-Object -ComObject Outlook.Application 
$NameSpace = $Outlook.GetNameSpace("MAPI") 

$folder = $NameSpace.Folders.Item("Scans").Folders.Item("Results") 

for ($i = ($folder.Items.Count - 1); $i -ge 0; $i--) 
{ 
    if ($($folder.Items)[$i].UnRead) # It breaks on this line 
    { 
     # Do stuff 
    } 
} 

つの質問:

1)これを引き起こすためにPS 4とPS 5の間で何が変わりましたか? PS 5のリリースノートでは何も飛び出さなかった。

2)私のスクリプトのバックアップを取っても問題が起きないようにするにはどうすればよいですか?

答えて

3

は、余分な$と括弧が必要だった理由を私は確信しなかったが、それはそう、元のバージョンで働いていた...自分で

if ($folder.Items[$i].UnRead) 

に変更

if ($($folder.Items)[$i].UnRead) 

をそれを考え出しました私は決してそれを乱さなかった。

+1

これは興味深いです。私はそれを変えるためにv4とv5の間で変わっていたことは知らない。私は元のバージョンが間違っていたと思います。修正されたバグがあった可能性がありますか? – briantist

+0

私は実際に最近このような見方をしましたが、問題を回避するためにselect -indexを使用しました。 –

+0

@briantistは、私がSOに見つかったこのコードのオフに私の元のコードをモデル化:$と括弧の余分なセットを使用していますTheMadTechnicianここ http://stackoverflow.com/a/24829429/6679564 が、私は特定のではなかったですなぜ。 – Tchotchke

関連する問題