---
title: "Getting Started with 1E’s Tachyon and PowerShell"
description: "Wrangle your endpoints with 1E’s Tachyon product and PowerShell in this in-depth tutorial!"
canonical: "https://adamtheautomator.com/1e-powershell/"
---

# Getting Started with 1E’s Tachyon and PowerShell

> Wrangle your endpoints with 1E’s Tachyon product and PowerShell in this in-depth tutorial!

Source: https://adamtheautomator.com/1e-powershell/

---

ATA Learning

Tap to hide

[

ATA Learning

](/)

*   [Home](/)
*   [Tutorials](/tutorials/)
*   [Instructors](/author/)
*   [Advertising](/advertising/)
*   [Recommended Resources](/resources/)
*   [About Adam](/about-adam/)

Search for:  

*   [](https://twitter.com/adbertram)
*   [](https://github.com/Adam-the-Automator)
*   [](https://www.linkedin.com/company/adam-the-automator-llc)
*   [](/feed/)

![Getting Started with 1E’s Tachyon and PowerShell](https://adamtheautomator.com/wp-content/uploads/2022/02/Getting-Started-with-1Es-Tachyon-and-PowerShell-1.jpg)

# Getting Started with 1E’s Tachyon and PowerShell

[![](https://secure.gravatar.com/avatar/d0b9d42e21e5622713f8b693aa5c0f9244d5f7dd200ed29b8398f52dee5de337?s=192&d=mm&r=g)Adam Bertram](https://adamtheautomator.com/author/adam-bertram/)21 February 20228 min. read

Categories: [IT Ops](/category/it-ops/)

Tags:[1E](/tag/1e/)[1E Tachyon](/tag/1e-tachyon/)[Powershell Administration](/tag/powershell-administration/)[Sponsored](/tag/sponsored/)

Table of Contents

*   [Getting the 1E PowerShell PSTachyonToolkit Module](#getting-the-1e-powershell-pstachyontoolkit-module)
*   [Retrieving Device Details and Status](#retrieving-device-details-and-status)
*   [Working with Tachyon Instructions](#working-with-tachyon-instructions)
*   [Interactive Instruction Search](#interactive-instruction-search)
*   [Running Existing Instructions](#running-existing-instructions)
*   [Publishing Instructions](#publishing-instructions)
*   [Running Dynamic Instructions](#running-dynamic-instructions)
*   [Dynamic SCALE](#dynamic-scale)
*   [Dynamic Scripting](#dynamic-scripting)
*   [WMI Integration](#wmi-integration)
*   [Conclusion](#conclusion)

1E’s Tachyon is primarily a GUI-driven endpoint management solution, but not entirely. As it turns out, the 1E PowerShell module exists called the `PSTachyonToolkit` that lets you leverage the power of Tachyon PowerShell!

This module is potentially good news to administrators who want to interface with Tachyon via PowerShell. Imagine the opportunities to develop automation for monitoring, communication, data processing, and issue remediation.

Where can I get the module? What are some of the possible operations you can perform? Where can I find help? These were just some of my questions when I started exploring the module. Read on, and this guide will help you start working with the `PSTachyonToolkit`.

## Getting the 1E PowerShell PSTachyonToolkit Module

When you need a PowerShell module, you’d probably think about installing it from PSGallery or NuGet. But in this case, the 1E PowerShell module isn’t available yet in any of the well-known module galleries.

Instead, you may find the download link for the module from the [Support Portal](https://1eportal.force.com/s/article/Tachyon80?pg=MDYtSmFuLTIwMjIgMTY6MzM%3D) for 1E customers. Once you download the module, install or extract its contents to your preferred location.

While the module contains many files, know that there are five essential files for the module to work.

<table><tbody><tr><td>File</td><td>Function</td></tr><tr><td>PSTachyonToolkit.psd1</td><td>The PowerShell module manifest file.</td></tr><tr><td>PSTachyonToolkit.psm1</td><td>The main PowerShell module file.</td></tr><tr><td>methods.json</td><td>The main PowerShell module file.</td></tr><tr><td>The main PowerShell module file.</td><td>The main PowerShell module file.</td></tr><tr><td>The main PowerShell module file.</td><td>A typical .NET configuration file containing the Tachyon signing tool configuration settings.</td></tr></tbody></table>

> _[Simple Cross-Platform Agent Language for Extensibility (SCALE)](https://help.1e.com/display/TCNSDK/SCALE+User+Guide) is 1E’s interpreted programming language._

Related:[Understanding and Building PowerShell Modules](https://adamtheautomator.com/powershell-modules/)

Now that you have the 1E PowerShell module, you can import the module into your PowerShell session.

```powershell
Import-Module .\PSTachyonToolkit.psd1
```

Next, specify the Tachyon server FQDN the module will connect. Running any other Tachyon commands will produce an error without setting the Tachyon server first.

```powershell
Set-TachyonServer -Server <TACHYON SERVER FQDN>
```

The current PSTachyonToolkit module version is 1.0.0, and there are 182 cmdlets available.

![PSTachyonToolkit Module Version](https://adamtheautomator.com/wp-content/uploads/2022/02/image-259.png)

PSTachyonToolkit Module Version

> _The PSTachyonToolkit module works on Windows PowerShell 5.1 and PowerShell (Core) 7.x. 1E claims that the module is more performant in PowerShell (Core) than in Windows PowerShell._
> 
> _Also, 1E does not recommend using the toolkit in PowerShell ISE when using the `Search-TachyonServer` feature._

> _The official documentation for the PSTachyonToolkit does not seem to exist (yet) on 1E’s website._

## Retrieving Device Details and Status

Every organization categorizes machines based on their criticality. A payroll server may be highly critical, while a desktop computer can be non-critical. With the PSTachyonToolkit, you can quickly query the device details and status using the `Get-TachyonDevice` cmdlet.

Executing the `Get-TachyonDevice` command without parameters returns only the endpoints’ FQDN.

![Listing all endpoint device FQDNs](https://adamtheautomator.com/wp-content/uploads/2022/02/image-260.png)

Listing all endpoint device FQDNs

To get all available properties of each endpoint, append the `-Full` switch to the command. But most of the time, returning all properties is not necessary. Thus, filtering the properties to display makes more sense, especially for monitoring.

For example, to get the essential endpoint details, you could select which properties to return, such as the below command.

```powershell
Get-TachyonDevice -Full | Select-Object Status,Fqdn,Criticality,OsVerTxt,DeviceType
```

As you can see below, the result gives you a high-level overview of the endpoint status ( `0` = offline, `1` = online ). And the `Criticality` code gives you the idea of whether you should quickly react (or panic) when the device status is offline. For reference, the [criticality values](https://help.1e.com/display/XPL80/Using+Device+Criticality) are as follows.

<table><tbody><tr><td>Criticality Code</td><td>Value</td></tr><tr><td>0</td><td>Undefined (or not set)</td></tr><tr><td>1</td><td>Non-Critical</td></tr><tr><td>2</td><td>Low</td></tr><tr><td>3</td><td>Medium</td></tr><tr><td>4</td><td>High</td></tr><tr><td>5</td><td>Critical</td></tr></tbody></table>

![Getting device details and status](https://adamtheautomator.com/wp-content/uploads/2022/02/image-261.png)

Getting device details and status

At this point, you can now customize your script to fit your monitoring requirements. For example, you would typically only want to monitor servers with at least a high criticality. In which case, you could run the below command.

Related:[How to Use PowerShell Where-Object to Filter All the Things](https://adamtheautomator.com/powershell-where-object/)

```powershell
Get-TachyonDevice -Full | `
Where-Object {$_.DeviceType -eq 'Server' `
-and $_.Criticality -ge 4 `
-and $_.Status -eq 0} | `
Select-Object Status,Fqdn,Criticality,OsVerTxt,DeviceType
```

![Getting device details and status with filtering](https://adamtheautomator.com/wp-content/uploads/2022/02/image-262.png)

Getting device details and status with filtering

And while you’re at it, why not [build a custom HTML report](https://adamtheautomator.com/html-report/) or [send alerts to Teams](https://adamtheautomator.com/teams-webhooks/)?

## Working with Tachyon Instructions

At the heart of Tachyon are [instructions](https://help.1e.com/display/TCNSDK/Instruction+Definition+Reference). And when you need to search and run instructions, you’d usually open a browser and navigate the [Tachyon Explorer](https://www.1e.com/products/tachyon-explorer/). But with the PSTachyonToolkit, you can now interact with Tachyon instructions within PowerShell in several ways.

### Interactive Instruction Search

Related:[Learning 1E’s Tachyon: Using Explorer](https://adamtheautomator.com/learn-with-me-tachyon-explorer/)

The 1E PowerShell module allows you to perform an interactive search and execution of Tachyon instructions. For example, suppose you need to determine your endpoints’ current PowerShell execution policy, you can do an interactive search for the instructions related to the execution policy.

To enter the interactive search mode, run the command below without any parameters.

```powershell
Search-TachyonServer
```

Now you can type in the search term, such as _execution policy_, and press Enter. There are a few results when searching for _execution policy, as you can see below_. Select which instruction to run by pressing its corresponding number. In this example, instruction `0` is what you want to run.

![Searching Tachyon instructions](https://adamtheautomator.com/wp-content/uploads/2022/02/image-263.png)

Searching Tachyon instructions

The command then asks you to enter the required parameter value, in this example, the `TargetScope`. The `TargetScope` value could be any part of the target endpoints’ FQDN. For example, the `TargetScope` for the below is any computer with [1EDemoLab.com](http://1EDemoLab.com) in their FQDN.

![Specifying the target scope](https://adamtheautomator.com/wp-content/uploads/2022/02/image-264.png)

Specifying the target scope

As you can see below, Tachyon returns an aggregated result showing 7 `Unrestricted` and 2 `RemoteSigned` endpoints PowerShell execution policies.

![Showing the Tachyon instruction result](https://adamtheautomator.com/wp-content/uploads/2022/02/image-265.png)

Showing the Tachyon instruction result

If you want a detailed list of endpoints instead of an aggregated result, run the `Search-TachyonServer` command with the `-Drilldown` switch.

```powershell
Search-TachyonServer -Drilldown
```

As a result, the result shows a list of the nine endpoints instead of the summary.

![Returning a detailed list result with the Drilldown parameter](https://adamtheautomator.com/wp-content/uploads/2022/02/image-266.png)

Returning a detailed list result with the `Drilldown` parameter

This interactive search mode is undoubtedly a helpful feature of the 1E PowerShell module. But the name `Search-TachyonServer` sounds like a command for searching Tachyon servers instead of searching for Tachyon instructions.

In my opinion, the cmdlet name `Search-TachyonInstruction` would be more descriptive and intuitive. Maybe the developers at 1E can consider adding that cmdlet alias in future module releases.

### Running Existing Instructions

Apart from interactively searching for instructions to run, you can also invoke instructions if you already know the instruction name. The `Invoke-TachyonInstruction` cmdlet allows you to execute instruction by its name.

Like the previous example, the instruction name for listing the PowerShell execution policy is `1E-Explorer-TachyonCore-GetExecutionPolicyPowershellCommandLine`. To execute this instruction from PowerShell, do so by running the command:

```powershell
Invoke-TachyonInstruction `
-instruction 1E-Explorer-TachyonCore-GetExecutionPolicyPowershellCommandLine `
-TargetScope <scope> -Drilldown
```

![Invoking a published Tachyon instruction](https://adamtheautomator.com/wp-content/uploads/2022/02/image-267.png)

Invoking a published Tachyon instruction

The ability to invoke instructions from PowerShell would allow developers to integrate Tachyon into their PowerShell automation efforts. For example, if you can get a list of endpoints with an `Unrestricted` execution policy, you can also automate changing the execution policy to `RemoteSigned`.

### Publishing Instructions

Searching and running pre-built instructions is a quick way to retrieve information and run actions against Tachyon devices. But an organization will always have a unique requirement that may not be available out-of-the-box.

Typically, developers write custom Tachyon instructions using the [Tachyon Instruction Management Studio (TIMS)](https://help.1e.com/display/TCNSDK/Getting+started+with+TIMS). The resulting instruction XML file would then be uploaded to the Tachyon web portal to publish.

Related:[Learning 1E’s Tachyon: Extending Tachyon](https://adamtheautomator.com/learn-with-me-tachyon-extending/)

But now, you have the option to publish new instructions or updates to existing instructions via PowerShell. For example, the code below retrieves all expired certificates from every device’s Personal certificate store.

```sql
@allCerts = Security.GetCertificates();
SELECT EffectiveDate, ExpirationDate, FriendlyName, StoreName, Subject, Thumbprint, Issuer
    FROM @allCerts
    WHERE datetime(@allCerts.ExpirationDate) >= datetime("%environment:now%")
	and StoreName = "Personal";
```

This example is saved as _1E-Demo-GetExpiredPersonalCertificates.xml_ and digitally signed in TIMS.

![Saving an instruction in TIMS](https://adamtheautomator.com/wp-content/uploads/2022/02/image-268.png)

Saving an instruction in TIMS

When you’re ready to publish the instruction, run the `Publish-TachyonInstruction` cmdlet and specify the XML filename. Also, specify an instruction set to assign the instruction, such as _Certificate Management_ for this example.

```powershell
Publish-TachyonInstruction `
-File .\1E-Demo-GetExpiredPersonalCertificates.xml `
-InstructionSet 'Certificate Management'
```

![Publishing an instruction in PowerShell](https://adamtheautomator.com/wp-content/uploads/2022/02/image-269.png)

Publishing an instruction in PowerShell

After publishing, you can now ask the question in Tachyon Explorer and through the `Search-TachyonServer` cmdlet.

![Searching for the new instruction in PowerShell](https://adamtheautomator.com/wp-content/uploads/2022/02/image-270.png)

Searching for the new instruction in PowerShell

![Searching for the new instruction in Tachyon Explorer](https://adamtheautomator.com/wp-content/uploads/2022/02/image-271.png)

Searching for the new instruction in Tachyon Explorer

## Running Dynamic Instructions

Another feature the 1E PowerShell toolkit has is running SCALE instructions and PowerShell scripts on the fly; you don’t need to create an instruction XML file first. This feature is possible through the `Invoke-TachyonDynamic` command.

When you run the `Invoke-TachyonDynamic` cmdlet, the following actions happen in the background:

*   Automatically generate the instruction XML file containing your code.
    
*   Digitally sign the instruction XML file. By default, the command uses the first code signing certificate on your local computer’s (`LocalMachine\My`) personal certificate store.
    

> _If you need to modify the signing certificate configuration, such as changing the store location or specifying the certificate subject name, you’ll need to edit the `Tachyon.InstructionSigner.exe.config` file._

*   Publish the dynamic instruction to the `DynamicScripting` instruction set. The dynamic instruction name follows the `<prefix>-<random characters>` naming convention, such as `1E-Demo-33ce873be9b64af586ed8464a1a33265`.

> _The default instruction prefix is `1E-Exchange`. Make sure to change the prefix that corresponds to your license by running the `Set-TachyonInstructionPrefix <prefix>` command first._

*   Invoke the dynamic instruction.

> _If you did not set the prefix or set a prefix that is not part of your Tachyon server license, you’d get the following error message when you run the dynamic instruction._

![Dynamic instruction error because of the wrong prefix](https://adamtheautomator.com/wp-content/uploads/2022/02/image-272.png)

Dynamic instruction error because of the wrong prefix

### Dynamic SCALE

Suppose you want to run a SCALE code to retrieve the endpoint [operating system name and version](https://help.1e.com/display/TCNSDK/OperatingSystem.GetSummary); your code would look similar to the one below.

> _Note: When running Dynamic SCALE code, the last line should assign the output to the `@result` table. If not, the dynamic instruction will not contain the proper data._

```powershell
@os = OperatingSystem.GetSummary();
@result = SELECT Caption,Version from @os;
```

Assuming that you saved the file as `GetOsInfo.txt`, the below command runs this dynamic SCALE code. The `-Scale` parameter points to the file containing your SCALE code.

```powershell
# Set the licensed instruction prefix
Set-TachyonInstructionPrefix "1E-Demo"

# Run the dynamic SCALE
Invoke-TachyonDynamic -Scale .\GetOsInfo.txt -TargetScope "1edemolab.com"
```

The output would look similar to the below screenshot.

![Running a dynamic SCALE in Tachyon](https://adamtheautomator.com/wp-content/uploads/2022/02/image-273.png)

Running a dynamic SCALE in Tachyon

### Dynamic Scripting

At times, running PowerShell scripts to perform actions or retrieve information is more convenient than SCALE. The `Invoke-TachyonDynamic` command allows running PowerShell scripts directly on endpoint devices.

For example, the script below retrieves the endpoint devices’ WinRM service name and status. The result is in JSON format to serialize the output as you see fit.

```powershell
Get-Service WinRM | Select-Object Name,Status | ConvertTo-Json
```

Assuming the PowerShell script filename is `GetWinRMStatus.ps1`, the command below will run the PowerShell script directly on the devices through Tachyon. The `-Force` switch overrides the PowerShell execution policy on the target device.

```powershell
Invoke-TachyonDynamic -Script .\GetWinRMStatus.ps1 `
-TargetScope <scope> -Force `
-Schema 'Name string(30), Status string(20)'
```

Specifying a custom schema using the `-Schema` parameter is optional. But in this example, adding a custom schema that matches the object’s properties brings the results to the top.

![Executing a Tachyon dynamic script](https://adamtheautomator.com/wp-content/uploads/2022/02/image-274.png)

Executing a Tachyon dynamic script

## WMI Integration

The PSTachyonToolkit module comes with the `Invoke-TachyonWmiQuery` command to run WMI query commands directly on endpoint devices. And since the query process happens through the Tachyon server, the process does not involve WMI remoting (WinRM).

> _Before running the `Invoke-TachyonWMIQuery` command, you must publish the `1E-Exchange-ExecuteWMIQuery.xml` instruction XML. You can find the XML file inside the module folder. Otherwise, the cmdlet will not work._

For example, you can invoke a WMI query to get the BIOS information of all endpoint devices. You’ll only need to provide the query string (`-Query`), the WMI namespace (`-Namespace`), and the target endpoint scope (`-TargetScope`).

```powershell
Invoke-TachyonWMIQuery -Query "select * from win32_bios" -Namespace "root\cimv2" -TargetScope <scope>
```

![Invoking a WMI query](https://adamtheautomator.com/wp-content/uploads/2022/02/image-275.png)

Invoking a WMI query

While the `Invoke-TachyonWMIQuery` provides a quick way to perform WMI queries against remote devices, I find that it lacks some useful features. There’s no native way to filter the results like the `Invoke-TachyonInstruction` or use a custom schema like the `Invoke-TachyonDynamic`.

## Conclusion

Even in its first official release, the 1E PowerShell PSTachyonToolkit module is already feature-packed. What you’ve learned so far in this guide is merely the basics. Overall, the 1E PowerShell PSTachyonToolkit is a promising addition to Tachyon’s extensibility.

What’s not to like when a powerful product such as Tachyon works with PowerShell? The ability to produce results as close to what you can get using Tachyon Explorer is quite impressive. You can even generate reusable cmdlets from existing functions and instructions!

In future articles, we’ll tackle a few specific automation use cases with PSTachyonToolkit. Such as killing processes that may be impacting user experience, fixing network latency issues, and tagging devices based on observed workload. Stay tuned!

Share this article

[Share on X](https://twitter.com/intent/tweet?url=https%3A%2F%2Fadamtheautomator.com%2F1e-powershell%2F&text=Getting%20Started%20with%201E%E2%80%99s%20Tachyon%20and%20PowerShell)[Share on Facebook](https://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2Fadamtheautomator.com%2F1e-powershell%2F)[Share on LinkedIn](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fadamtheautomator.com%2F1e-powershell%2F)

## Related Posts

![](https://adamtheautomator.com/wp-content/uploads/2022/02/Autonomous-Persona-Management-using-1E-Tachyons-PowerShell-Toolkit.jpg)

### [Autonomous Persona Management using 1E Tachyon’s PowerShell Toolkit](/1e-powershell-3/)

Learn how to manage thousands of endpoints with dynamic tagging capabilities with 1E’s Tachon.

![](https://adamtheautomator.com/wp-content/uploads/2022/01/Exploring-Processes-and-Applications-with-1E-Tachyon.jpg)

### [Exploring Processes and Applications with 1E Tachyon](/1e-tachyon/)

Learn to use the PowerShell and Tachyon integration to solve a specific use-case scenario.

![](https://adamtheautomator.com/wp-content/uploads/2022/02/How-to-Up-Your-PowerShell-Game-with-1E-Tachyon.jpg)

### [How to Up Your PowerShell Game with 1E Tachyon](/1e-powershell-2/)

Learn how to build a PowerShell script to check for webserver response time and clear remote PC DNS caches using 1E’s Tachyon.

## Categories

*   [IT Ops](/category/it-ops/)
*   [Cloud](/category/cloud/)
*   [DevOps](/category/devops/)
*   [Home Ops](/category/home-ops/)
*   [Information Security](/category/infosec/)
*   [Software Development](/category/software-development/)

## Site

*   [Home](/)
*   [Tutorials](/tutorials/)
*   [Instructors](/author/)
*   [Advertising](/advertising/)
*   [Recommended Resources](/resources/)
*   [About Adam](/about-adam/)

Copyright 2026© ATA Learning | [Privacy Policy](/privacy/)
