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)私のスクリプトのバックアップを取っても問題が起きないようにするにはどうすればよいですか?
これは興味深いです。私はそれを変えるためにv4とv5の間で変わっていたことは知らない。私は元のバージョンが間違っていたと思います。修正されたバグがあった可能性がありますか? – briantist
私は実際に最近このような見方をしましたが、問題を回避するためにselect -indexを使用しました。 –
@briantistは、私がSOに見つかったこのコードのオフに私の元のコードをモデル化:$と括弧の余分なセットを使用していますTheMadTechnicianここ http://stackoverflow.com/a/24829429/6679564 が、私は特定のではなかったですなぜ。 – Tchotchke