(Outlookの)受信トレイフォルダーの最初の5つのアイテムを一覧表示する次のコードがあります。
その数字部分(たとえば、他のテキストに埋め込まれている7桁の任意の数字)のみを抽出するにはどうすればよいですか?次に、Powershellコマンドを使用して、抽出した数値を取得してCSVファイルにダンプしたいと思います(したがって、使用している既存のスプレッドシートに簡単に組み込むことができます)。
これが私が試したものです:
$outlook = new-object -com Outlook.Application
$sentMail = $outlook.Session.GetDefaultFolder(6) # == olFolderInbox
$sentMail.Items | select -last 10 TaskSubject # ideally, grabbing first 20
$matches2 = "\d+$"
$res = gc $sentMail.Items | ?{$_ -match $matches2 | %{ $_ -match $matches2 | out-null; $matches[1] }
しかし、これは正しく実行されませんが、むしろ..私が待機中の入力記号でぶら下がっています:そのように:
>>
>>
>>
おそらく、第1部と第2部の間に別の変数を作成する必要がありますか?
$matches
変数の目的はわかりませんが、最後の行を次のようなものに置き換えてみてください。
件名項目の場合:
$sentMail.Items | % { $_.TaskSubject | Select-String -Pattern '^\d{3}-\d{3}-\d{4}' | % {([string]$_).Substring(0,12)} }
メッセージ本文アイテムの場合:
$sentMail.Items | % { ($_.Body).Split("`n") | Select-String -Pattern '^\d{3}-\d{3}-\d{4}' |% {([string]$_).Substring(0,12)} }
これは、私がよく使用するSelect-Stringへの参照です。https://technet.microsoft.com/library/hh849903.aspx
これは私が使ったことがないがかなりかっこいいと思った電話番号の部分への参照です。http://blogs.technet.com/b/heyscriptingguy/archive/2011/03/24/use-powershell-to-search-a-group-of-files-for-phone-numbers.aspx
幸運を!
これは、件名を介した7桁の抽出用に編集されたバージョンです。これは、番号の両側にスペースがあることを前提としていますが、必要に応じて少し変更できます。-First部分をSelect *に変更するか、範囲を100深くすることで、深さを調整することもできます。
$outlook = New-Object -com Outlook.Application
$Mail = $outlook.Session.GetDefaultFolder(6) # Folder Inbox
$Mail.Items | select -First 100 TaskSubject |
% { $_.TaskSubject | Select-String -Pattern '\s\d{7}\s'} |
% {((Select-String -InputObject $_ -Pattern '\s\d{7}\s').Line).split(" ") |
% {if(($_.Length -eq 7) -and ($_ -match '\d{7}')) {$_ | Out-File -FilePath "C:\Temp\SomeFile.csv" -Append}}}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加