Cmdlets for Email

Build 24.0.9062

接続の確立

CData Cmdlets ユーザーは、データモジュールをインストールし、接続プロパティを設定してスクリプトを開始できます。このセクションでは、CSV インポートおよびエクスポートcmdlet などのネイティブPowerShell cmdlet でEmail Cmdlets を使用する例を示します。

インストールおよび接続

PSGet がある場合は、PowerShell Gallery から次のコマンドを使ってcmdlet をインストールできます。CData サイトからセットアップを取得することもできます。

Install-Module EmailCmdlets

プロファイルに以下を追加すると、次のセッションでcmdlet がロードされます。

Import-Module EmailCmdlets;

Connect-Email cmdlet を使って、別のcmdlet に渡すことができる接続オブジェクトを作成します。

$conn = Connect-Email -Port 993 -Server 'outlook.office365.com' -Password 'password' -User 'user' -Protocol 'IMAP' -SMTPPort 587 SMTP Server 'smtp.office365.com'

Authentication セクションのUser プロパティとPassword プロパティに、有効な認証情報を設定する必要があります。E メールを取得するには、Server を指定する必要があります。E メールを送信するにはSMTPServer を指定する必要があります。

Deprecation notice for Gmail users

From May 30, 2022, Google no longer supports the use of third-party apps or devices which ask you to sign in to your Google Account using only your username and password. There are alternatives that allow your continued use of our Email drivers to connect to your Google account, which is why Gmail-specific columns, pseudo-columns, and stored procedures are only getting deprecated. We recommend you move to our Gmail drivers that offer more secure methods of authentication.

データの取得

Select-Email cmdlet はデータを取得するためのネイティブなPowerShell インターフェースを提供します。

$results = Select-Email -Connection $conn -Table "[INBOX]" -Columns @("From, Subject") -Where "Subject='Test'"
Invoke-Email cmdlet はSQL インターフェースを提供します。このcmdlet を使うと、Query パラメータを介してSQL クエリを実行できます。

cmdlet 出力のパイプ処理

cmdlet は行オブジェクトをパイプラインに一度に一行ずつ返します。以下は、結果をCSV ファイルにエクスポートします。

Select-Email -Connection $conn -Table [INBOX] -Where "Subject = 'Test'" | Select -Property * -ExcludeProperty Connection,Table,Columns | Export-Csv -Path c:\my[INBOX]Data.csv -NoTypeInformation

Select-Email からの結果をSelect-Object cmdlet にパイプして、Export-CSV cmdlet にパイプする前にいくつかのプロパティを実行していることがわかるでしょう。これをする理由は、CData Cmdlets は接続、テーブル、およびカラムの情報を結果セットの各行オブジェクトに追加しますが、必ずしもその情報がCSV ファイルに必要ではないからです。

ただし、これによってcmdlet の出力を別のcmdlet にパイプすることが容易になります。以下に、結果セットをJSON に変換する例を示します。

 
PS C:\> $conn  = Connect-Email -Port 993 -Server 'outlook.office365.com' -Password 'password' -User 'user' -Protocol 'IMAP' -SMTPPort 587 SMTP Server 'smtp.office365.com'
PS C:\> $row = Select-Email -Connection $conn -Table "[INBOX]" -Columns (From, Subject) -Where "Subject = 'Test'" | select -first 1
PS C:\> $row | ConvertTo-Json
{
  "Connection":  {

  },
  "Table":  "[INBOX]",
  "Columns":  [

  ],
  "From":  "MyFrom",
  "Subject":  "MySubject"
} 

データの削除

以下は、抽出条件に合うあらゆるレコードを削除します。

Select-Email -Connection $conn -Table [INBOX] -Where "Subject = 'Test'" | Remove-Email

データの変更

cmdlet はデータクレンジング同様、データの変換を容易にします。次の例は、レコードがすでに存在するかどうか、挿入する前に更新が必要かどうかをチェックしてから、CSV ファイルのデータをIMAP にロードします。

Import-Csv -Path C:\My[INBOX]Updates.csv | %{
  $record = Select-Email -Connection $conn -Table [INBOX] -Where ("Id = `'"+$_.Id+"`'")
  if($record){
    Update-Email -Connection $conn -Table [INBOX] -Columns @("From","Subject") -Values @($_.From, $_.Subject) -Where "Id  = `'$_.Id`'"
  }else{
    Add-Email -Connection $conn -Table [INBOX] -Columns @("From","Subject") -Values @($_.From, $_.Subject)
  }
}

Copyright (c) 2024 CData Software, Inc. - All rights reserved.
Build 24.0.9062