Cmdlets for ServiceNow

Build 20.0.7654

接続の確立

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

インストールおよび接続

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

Install-Module ServiceNowCmdlets

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

Import-Module ServiceNowCmdlets;

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

$conn = Connect-ServiceNow -OAuthClientId "MyClientId" -OAuthClientSecret "MyClientSecret" -Password "MyPassword" -User "MyUser" -Instance "MyInstance"

認証する前に

データに接続する前に、認証ユーザーがメタデータの一覧表示に必要な次の権限を最低でも割り当てられていることを確認する必要があります。これを行う前に、アカウントの管理者は、[ユーザー]メニュー->[Elevate Roles]->[security_admin]チェックボックスをON にし ->[OK]に移動して、役割を昇格する必要があります。以下にリストされているテーブルの場合、ユーザーはsys_db_object のような行レベルの権限と、sys_db_object.* のようなフィールドレベルの権限の両方を持っている必要があります。ユーザーがアクセスを希望する追加のテーブルについては、少なくとも行レベルの権限が必要です。

READ sys_db_object

Access to sys_db_object is required to connect to data. You can enable access to this as follows:

  1. Navigate to the System Security -> Access Controls (ACL). Select New to create an access control object.
  2. For Type, select record.
  3. For Operation, select read.
  4. For Name, select Table [sys_db_object] in the first drop-down and --None-- in the second drop-down.
  5. In the Requires role section, double-click the text box that says Insert a new row.... Search for and select your desired role.
  6. Click Submit to create the ACL object.
  7. Assign the role which has the created ACL to the authenticating user. To do this, navigate to User Administration -> Users -> Select authenticating user -> Roles -> Edit... -> add your role from collection.

READ sys_glide_object

Access to the sys_glide_object is required for certain ServiceNow table metadata. You can enable access to this by repeating the above procedure, but instead selecting Field class [sys_glide_object] for the ACL's name.

READ sys_dictionary

Access to sys_dictionary is required to retrieve schema information from ServiceNow. You can enable access to this by navigating to User Administration -> Users -> Select authenticating user -> Roles -> Edit... -> add "personalize_dictionary" role from collection.

Basic 認証の使用

Basic 認証を使用して認証するには、ServiceNow User およびPassword を提供する必要があります。

ServiceNow への認証

次の接続プロパティを設定して、接続してください。

  1. AuthScheme:BASIC に設定。
  2. User:ユーザー名に設定。
  3. Password:パスワードに設定。
  4. Instance:インスタンスに設定。例えば、インスタンスURL がhttps://MyInstance12345.service-now.com/ の場合は、Instance プロパティを' MyInstance12345 ' に設定します。

OAuth の使用

ServiceNow はOAuth 2.0 認証標準を利用しています。OAuth を使って認証するには、ServiceNow にOAuth アプリを登録してOAuthClientId を取得しなければなりません。OAuth 値の他に、InstanceUser、およびPassword の指定が必要です。

OAuth 認証を介した接続について詳しくは、OAuth 認証の使用 を参照してください。

データの取得

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

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

cmdlet 出力のパイプ処理

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

Select-ServiceNow -Connection $conn -Table incident -Where "category = 'request'" | Select -Property * -ExcludeProperty Connection,Table,Columns | Export-Csv -Path c:\myincidentData.csv -NoTypeInformation

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

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

 
PS C:\> $conn  = Connect-ServiceNow -OAuthClientId "MyClientId" -OAuthClientSecret "MyClientSecret" -Password "MyPassword" -User "MyUser" -Instance "MyInstance"
PS C:\> $row = Select-ServiceNow -Connection $conn -Table "incident" -Columns (sys_id, priority) -Where "category = 'request'" | select -first 1
PS C:\> $row | ConvertTo-Json
{
  "Connection":  {

  },
  "Table":  "incident",
  "Columns":  [

  ],
  "sys_id":  "Mysys_id",
  "priority":  "Mypriority"
} 

データの削除

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

Select-ServiceNow -Connection $conn -Table incident -Where "category = 'request'" | Remove-ServiceNow

データの更新

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

Import-Csv -Path C:\MyincidentUpdates.csv | %{
  $record = Select-ServiceNow -Connection $conn -Table incident -Where ("sys_id = `'"+$_.sys_id+"`'")
  if($record){
    Update-ServiceNow -Connection $conn -Table incident -Columns @("sys_id","priority") -Values @($_.sys_id, $_.priority) -Where "sys_id  = `'$_.sys_id`'"
  }else{
    Add-ServiceNow -Connection $conn -Table incident -Columns @("sys_id","priority") -Values @($_.sys_id, $_.priority)
  }
}

Copyright (c) 2020 CData Software, Inc. - All rights reserved.
Build 20.0.7654