接続の確立
CData Cmdlets ユーザーは、データモジュールをインストールし、接続プロパティを設定してスクリプトを開始できます。このセクションでは、CSV インポートおよびエクスポートcmdlet などのネイティブPowerShell cmdlet でSage300 Cmdlets を使用する例を示します。
インストールおよび接続
PSGet がある場合は、PowerShell Gallery から次のコマンドを使ってcmdlet をインストールできます。CData サイトからセットアップを取得することもできます。
Install-Module Sage300Cmdlets
プロファイルに以下を追加すると、次のセッションでcmdlet がロードされます。
Import-Module Sage300Cmdlets;
Connect-Sage300 cmdlet を使って、別のcmdlet に渡すことができる接続オブジェクトを作成します。
$conn = Connect-Sage300 -User "SAMPLE" -Password "password" -URL "http://127.0.0.1/Sage300WebApi/v1/-/"
Before Authenticating
Sage 300 requires some initial setup in order to communicate over the Sage 300 Web API. The logged in user must have API access to one or all modules of the Sage300 instance. In Sage300 a user is assigned a security group. A security group is a set of permissions for each module. It is recommended that you use a different user other than the ADMIN user to access the API. The ADMIN user has a couple of extra steps in order to gain access to the API. Follow the steps below in order to obtain access to the API.
Creating a User
Skip this step if you have already created a new user or you would like to use an existing account.
- Open the Sage300 Desktop Application which is included in the installation of Sage300. Log in with the ADMIN account.
- Go to Administrative Services -> Users
- Fill in the required information and click Add
Setting up the Security Group
- Open the Sage300 Desktop Application which is included in the installation of Sage300. Log in with the ADMIN account.
- Go to Administrative Services -> Security Groups
- In the Application you will find all the modules of Sage300. The Group ID represents the security group you want to modify. Below you will find a list of permissions that you can check.
- (Optional)Create a new Security Group fill the Group ID, Group Description and check any of the permissions including the Sage 300 Web API permission. Lastly click Add(per each application required)
- Or select an existing Security Group you are going to assign to the User under Group ID and check the Sage 300 Web API permission in the end of permissions(per each application required).
Assigning a Security Group
- Open the Sage300 Desktop Application which is included in the installation of Sage300. Log in with the ADMIN account.
- Go to Administrative Services -> User Authorization
- Under User ID select your new/existing User
- Now for each Application assign the Group ID which you created/modified
- Once the user access is done, ensure that they have access to the web API. Replace 'server' with your Sage300 instance URL.
Connecting to Sage 300
The CData Cmdlets PowerShell Module for Sage 300 communicates to Sage 300 over the OData API. You can authenticate to Sage 300 using Basic authentication.
Basic Authentication
You must provide values for the following properties to successfully authenticate to Sage 300. Note that the provider will reuse the session opened by Sage 300 using cookies.
This means that your credentials will be used only on the first request to open the session. After that, cookies returned from Sage 300 will be used for authentication.
- Url: Set this to the url of the server hosting Sage 300. Construct a URL for the Sage 300 Web API as follows: {protocol}://{host-application-path}/v{version}/{tenant}/ For example, http://localhost/Sage300WebApi/v1.0/-/.
- User: Set this to the username of your account.
- Password: Set this to the password of your account.
データの取得
Select-Sage300 cmdlet はデータを取得するためのネイティブなPowerShell インターフェースを提供します。
$results = Select-Sage300 -Connection $conn -Table "OEInvoices" -Columns @("InvoiceUniquifier, ApprovedLimit") -Where "Allowpartialshipments='Yes'"Invoke-Sage300 cmdlet はSQL インターフェースを提供します。このcmdlet を使うと、Query パラメータを介してSQL クエリを実行できます。
cmdlet 出力のパイプ処理
cmdlet は行オブジェクトをパイプラインに一度に一行ずつ返します。以下は、結果をCSV ファイルにエクスポートします。
Select-Sage300 -Connection $conn -Table OEInvoices -Where "Allowpartialshipments = 'Yes'" | Select -Property * -ExcludeProperty Connection,Table,Columns | Export-Csv -Path c:\myOEInvoicesData.csv -NoTypeInformation
Select-Sage300 からの結果をSelect-Object cmdlet にパイプして、Export-CSV cmdlet にパイプする前にいくつかのプロパティを実行していることがわかるでしょう。これをする理由は、CData Cmdlets は接続、テーブル、およびカラムの情報を結果セットの各行オブジェクトに追加しますが、必ずしもその情報がCSV ファイルに必要ではないからです。
ただし、これによってcmdlet の出力を別のcmdlet にパイプすることが容易になります。以下に、結果セットをJSON に変換する例を示します。
PS C:\> $conn = Connect-Sage300 -User "SAMPLE" -Password "password" -URL "http://127.0.0.1/Sage300WebApi/v1/-/" PS C:\> $row = Select-Sage300 -Connection $conn -Table "OEInvoices" -Columns (InvoiceUniquifier, ApprovedLimit) -Where "Allowpartialshipments = 'Yes'" | select -first 1 PS C:\> $row | ConvertTo-Json { "Connection": { }, "Table": "OEInvoices", "Columns": [ ], "InvoiceUniquifier": "MyInvoiceUniquifier", "ApprovedLimit": "MyApprovedLimit" }