Automate NASA Integration Tasks from PowerShell

Jerod Johnson
Jerod Johnson
Director, Technology Evangelism
Are you in search of a quick and easy way to access NASA data from PowerShell? This article demonstrates how to utilize the NASA Cmdlets for tasks like connecting to NASA data, automating operations, downloading data, and more.

The CData API Driver for ADO.NET is a standard ADO.NET Provider that make it easy to accomplish data cleansing, normalization, backup, and other integration tasks by enabling real-time access to NASA.

ADO.NET Provider

The ADO.NET Provider provides a SQL interface for NASA; this tutorial shows how to use the Provider to retrieve NASA data.

Once you have acquired the necessary connection properties, accessing NASA data in PowerShell can be enabled in three steps.

Using API Key Authentication

Most NASA API endpoints (APOD, NeoWS, DONKI, TechTransfer) require a NASA API key. Register for a free key at https://api.nasa.gov. The default DEMO_KEY provides limited access (30 requests/hour, 50 requests/day); a registered key allows 1,000 requests/hour.

The following endpoints do not require an API key and work without authentication: EONET (Earth Observatory Natural Event Tracker), EPIC (Earth Polychromatic Imaging Camera), NASA Image and Video Library, and TechPort.

After obtaining your API key, set the following connection properties:

  • AuthScheme: Set this to APIKey.
  • APIKey: Set this to your NASA API key. Use DEMO_KEY for limited testing.

Example Connection String

Profile=C:\profiles\NASA.apip;AuthScheme=APIKey;APIKey=YOUR_NASA_API_KEY

Connecting to NASA

Once the authentication is configured, you can connect to NASA and query data from any of the available tables such as AstronomyPictureOfDay, NearEarthObjectFeed, EonetEvents, and NasaImageLibrary.

  1. Load the provider's assembly:

    [Reflection.Assembly]::LoadFile("C:\Program Files\CData\CData API Driver for ADO.NET\lib\System.Data.CData.API.dll")
        
  2. Connect to NASA:

     
    $conn= New-Object System.Data.CData.API.APIConnection("Profile=C:\profiles\NASA.apip;AuthScheme=APIKey;APIKey=YOUR_NASA_API_KEY")
    $conn.Open()
    
  3. Instantiate the APIDataAdapter, execute an SQL query, and output the results:

    $sql="SELECT ,  from AstronomyPictureOfDay"
    
    $da= New-Object System.Data.CData.API.APIDataAdapter($sql, $conn)
    $dt= New-Object System.Data.DataTable
    $da.Fill($dt)
    
    $dt.Rows | foreach {
    	Write-Host $_. $_.
    }
      

Ready to get started?

Connect to live data from NASA with the API Driver

Connect to NASA