Cmdlets for Sage 300

Build 24.0.9060

Establishing a Connection

With the CData Cmdlets users can install a data module, set the connection properties, and start scripting. This section provides examples of using our Sage300 Cmdlets with native PowerShell cmdlets, like the CSV import and export cmdlets.

Installing and Connecting

If you have PSGet, installing the cmdlets can be accomplished from the PowerShell Gallery with the following command. You can also obtain a setup from the CData site.

Install-Module Sage300Cmdlets

The following line is then added to your profile, loading the cmdlets on the next session:

Import-Module Sage300Cmdlets;

You can then use the Connect-Sage300 cmdlet to create a connection object that can be passed to other cmdlets:

$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.

Retrieving Data

The Select-Sage300 cmdlet provides a native PowerShell interface for retrieving data:

$results = Select-Sage300 -Connection $conn -Table "OEInvoices" -Columns @("InvoiceUniquifier, ApprovedLimit") -Where "Allowpartialshipments='Yes'"
The Invoke-Sage300 cmdlet provides an SQL interface. This cmdlet can be used to execute an SQL query via the Query parameter.

Piping Cmdlet Output

The cmdlets return row objects to the pipeline one row at a time. The following line exports results to a CSV file:

Select-Sage300 -Connection $conn -Table OEInvoices -Where "Allowpartialshipments = 'Yes'" | Select -Property * -ExcludeProperty Connection,Table,Columns | Export-Csv -Path c:\myOEInvoicesData.csv -NoTypeInformation

You will notice that we piped the results from Select-Sage300 into a Select-Object cmdlet and excluded some properties before piping them into an Export-CSV cmdlet. We do this because the CData Cmdlets append Connection, Table, and Columns information onto each row object in the result set, and we do not necessarily want that information in our CSV file.

However, this makes it easy to pipe the output of one cmdlet to another. The following is an example of converting a result set to 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"
} 

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