Cmdlets for Microsoft Project

Build 22.0.8479

接続の確立

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

インストールおよび接続

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

Install-Module MicrosoftProjectCmdlets

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

Import-Module MicrosoftProjectCmdlets;

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

$conn = Connect-MicrosoftProject -User 'myuseraccount' -Password 'mypassword' -URL 'http://myserver/myOrgRoot'

Connecting to Microsoft Project

In order to connect to the Microsoft Project data source, you will first need to specify the below connection properties.

  • Url: (Required) Set this to a valid Microsoft Project Web App URL. For example:
    http://contoso.com/sites/pwa/
  • Schema: (Optional) There are two available schemas, "ODataV1" and "ODataV2". The "ODataV2" schema (default) can be used for full CRUD operations. However, for reporting purposes, the "ODataV1" schema is superior, since it provides more granular data and exposes the custom fields. See データモデル for more information about the available functionality in each Schema.
  • ProjectId: (Optional) If the "ODataV2" schema is specified, you can additionally set this property to a specific Project Id, in order to define the default project for all the operations that require one.

Authenticating to Project Online

There are several authentication methods available for connecting to Microsoft Project including the SharePoint Online Cookie Service to connect on SharePoint Online, OAuth and SSO. The supported SSO identity providers are: Azure Active Directory, OneLogin, and OKTA.

SharePoint Online Cookie Service

To connect to Microsoft Project on SharePoint Online using your login credentials, set the AuthScheme to SharePointOnlineCookies, the User and Password to your user credentials.

OAuth

To use the OAuth 2.0 authentication standard you should first create a custom OAuth app to obtain the OAuthClientId, OAuthClientSecret. In addition to those properties, set CallbackURL. See OAuth2 認証の使用 for more information.

You should set the AuthScheme to OAuth to enforce the OAuth Authentication scheme.

ADFS

AuthSchemeADFS に設定します。次の接続プロパティを設定する必要があります。

  • User:ADFS ユーザーに設定。
  • Password:ユーザーのADFS パスワードに設定。
  • SSOLoginURL:SSO プロバイダーが使用するログインURL に設定。
以下は接続文字列の例です。
AuthScheme=ADFS;User=username;Password=password;SSOLoginURL='https://sts.company.com';

ADFS 統合

ADFS 統合フローは、現在ログインしているWindows ユーザーの認証情報で接続していることを示します。 ADFS 統合フローを使うには、User およびPasswordを指定せず、それ以外は上記ADFS ガイドの手順と同じです。

Okta

AuthSchemeOkta に設定します。Okta を介した認証には、次の接続プロパティを使用します。

  • User:Okta ユーザーに設定。
  • Password:Okta パスワードに設定。
  • SSOLoginURL:SSO プロバイダーが使用するログインURL に設定。
以下の場合、

  • Okta クライアントリクエストコンテキストをオーバーライドする信頼されたアプリケーションまたはプロキシ経由でユーザーを認証する
  • MFA を構成する

Okta を使用して認証するためには、SSOProperties 入力パラメータの組み合わせを使用する必要があります。それ以外の場合、これらの値を設定する必要はありません。

SSOProperties に、必要に応じて以下の入力パラメータを設定します。

  • APIToken:Okta クライアントリクエストコンテキストをオーバーライドする、信頼されたアプリケーションまたはプロキシ経由でユーザーを認証する場合、これを顧客がOkta 組織で作成したAPI Token に設定します。
  • MFAType:MFA フローを設定した場合に設定。現時点では、次のタイプをサポートしています:OktaVerify、Email、およびSMS。
  • MFAPassCode:MFA フローを設定した場合にのみ設定。これを空欄または無効な値に設定した場合、本製品 はユーザーのデバイスまたはE メールにワンタイムパスワードチャレンジを発行します。パスコードを受信後、取得したワンタイムパスワードをMFAPassCode 接続プロパティに設定する接続を再度開きます。
  • MFARememberDevice:Okta は、MFA が必要な場合にデバイスを記憶させることをサポートします。設定された認証ポリシーに従ってデバイスの記憶が許可されている場合、本製品 はMFA 認証の有効期間を延長するデバイストークンを送信します。このプロパティはデフォルトでTrue に設定されてます。MFA を記憶させない場合のみFalse に設定してください。

接続文字列の例:

AuthScheme=Okta;SSOLoginURL='https://example.okta.com/home/appType/0bg4ivz6cJRZgCz5d6/46';User=oktaUserName;Password=oktaPassword;

OneLogin

AuthSchemeOneLogin に設定します。OneLogin への接続には、次の接続プロパティを使用します。

  • User:OneLogin ユーザーに設定。
  • Password:ユーザーのOneLogin パスワードに設定。
次のSSOProperties がOneLogin への認証に必要です。
  • OAuthClientId:[Developers]->[API Credentials]->[Credential]->[ClientId]を選択して取得できるOAuthClientId に設定。
  • OAuthClientSecret:[Developers]->[API Credentials]->[Credential]->[ClientSecret]を選択して取得できるOAuthClientSecret に設定。
  • Subdomain:SSO アプリにアクセスするOneLogin ユーザーのサブドメインに設定。例えば、OneLogin URL がsplinkly.onelogin.com の場合は、splinkly をサブドメインの値として設定します。
  • AppId:SSO アプリのId に設定。
  • Region(オプション):OneLogin アカウントで使用しているリージョンに設定。OneLogin API は複数のリージョンで動作し、このプロパティは正しいドメインを見つけるために使用されます。次の値の1つを取ります。
    • US(デフォルト)
    • EU

次は接続文字列の例です。 次の接続文字列はOneLogin への接続にAPI キーを使います。

AuthScheme=OneLogin;User=OneLoginUserName;Password=OneLoginPassword;SSOProperties='OAuthClientID=3fc8394584f153ce3b7924d9cd4f686443a52b;OAuthClientSecret=ca9257fd5cc3277abb5818cea28c06fe9b3b285d73d06;Subdomain=OneLoginSubDomain;AppId=1433920';

AzureAD

AuthSchemeAzureAD に設定します。AzureAD への接続には、以下の接続プロパティを使用します。

この構成には、2つのAAD アプリケーションが必要であることに注意してください:シングルサインオンに使用される"Microsoft Project" アプリケーションと、"Microsoft Project" アプリケーションに対するuser_impersonation 権限を持つ別の"コネクタ" アプリケーションです。 OAuth 接続プロパティも指定する必要があります。

  • OAuthClientId:アプリ登録の概要セクションにリストされている、コネクタアプリケーションのアプリケーションId。
  • OAuthClientSecret:コネクタアプリケーションのクライアントシークレット値。新しいクライアントシークレットを作成すると、Azure AD にこれが表示されます。
  • CallbackURL:コネクタアプリケーションのリダイレクトURI に設定。例:https://localhost:33333

AzureAD への認証には、以下のSSOProperties を使用します。

  • Resource:アプリ登録の概要セクションにリストされている、Microsoft Project アプリケーションのアプリケーションId URI。ほとんどの場合、これはカスタムMicrosoft Project ドメインのURL です。
  • AzureTenant:アプリケーションが登録されているAzure AD テナントのId。

次は接続文字列の例です。

AuthScheme=AzureAD;OAuthClientId=3ea1c786-d527-4399-8c3b-2e3696ae4b48;OauthClientSecret=xxx;CallbackUrl=https://localhost:33333;SSOProperties='Resource=;AzureTenant=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx';

データの取得

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

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

cmdlet 出力のパイプ処理

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

Select-MicrosoftProject -Connection $conn -Table Projects -Where "Name =; 'Tax Checker'" | Select -Property * -ExcludeProperty Connection,Table,Columns | Export-Csv -Path c:\myProjectsData.csv -NoTypeInformation

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

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

 
PS C:\> $conn  = Connect-MicrosoftProject -User 'myuseraccount' -Password 'mypassword' -URL 'http://myserver/myOrgRoot'
PS C:\> $row = Select-MicrosoftProject -Connection $conn -Table "Projects" -Columns (Id, Name) -Where "Name =; 'Tax Checker'" | select -first 1
PS C:\> $row | ConvertTo-Json
{
  "Connection":  {

  },
  "Table":  "Projects",
  "Columns":  [

  ],
  "Id":  "MyId",
  "Name":  "MyName"
} 

データの削除

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

Select-MicrosoftProject -Connection $conn -Table Projects -Where "Name = 'Tax Checker'" | Remove-MicrosoftProject

データの変更

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

Import-Csv -Path C:\MyProjectsUpdates.csv | %{
  $record = Select-MicrosoftProject -Connection $conn -Table Projects -Where ("Id = `'"+$_.Id+"`'")
  if($record){
    Update-MicrosoftProject -Connection $conn -Table Projects -Columns @("Id","Name") -Values @($_.Id, $_.Name) -Where "Id  = `'$_.Id`'"
  }else{
    Add-MicrosoftProject -Connection $conn -Table Projects -Columns @("Id","Name") -Values @($_.Id, $_.Name)
  }
}

Copyright (c) 2023 CData Software, Inc. - All rights reserved.
Build 22.0.8479