Skip to main content

ESU Audit

Summary

This script will search for ESU licenses present on the endpoint and return information for any licenses found. Any data from the ESU licenses will be stored in the ESU Status custom field.

Sample Run

Image1

Dependencies

Task Creation

Script Details

Step 1

Navigate to AutomationTasks
step1

Step 2

Create a new Script Editor style task by choosing the Script Editor option from the Add dropdown menu
step2

The New Script page will appear on clicking the Script Editor button:
step3

Step 3

Fill in the following details in the Description section:

Name: ESU Audit
Description: This script will search for ESU licenses present on the endpoint and return information for any licenses found
Category: Data Collection

Image2

Script Editor

Click the Add Row button in the Script Editor section to start creating the script
AddRow

A blank function will appear:
BlankFunction

Row 1 Function: PowerShell Script

Search and select the PowerShell Script function.

PowerShell Function Search
PowerShell Function Selected

The following function will pop up on the screen:
PowerShell Function Example

Paste in the following PowerShell script and set the Expected time of script execution in seconds to 300 seconds. Click the Save button.

#region Setup - Variables
$ProjectName = 'Get-ESUStatus'
[Net.ServicePointManager]::SecurityProtocol = [enum]::ToObject([Net.SecurityProtocolType], 3072)
$BaseURL = 'https://file.provaltech.com/repo'
$PS1URL = "$BaseURL/script/$ProjectName.ps1"
$WorkingDirectory = "C:\ProgramData\_automation\script\$ProjectName"
$PS1Path = "$WorkingDirectory\$ProjectName.ps1"
$WorkingPath = $WorkingDirectory
$LogPath = "$WorkingDirectory\$ProjectName-log.txt"
$ErrorLogPath = "$WorkingDirectory\$ProjectName-Error.txt"
#endregion
#region Setup - Folder Structure
New-Item -Path $WorkingDirectory -ItemType Directory -ErrorAction SilentlyContinue | Out-Null
$response = Invoke-WebRequest -Uri $PS1URL -OutFile $PS1Path
if (($response.StatusCode -ne 200) -and (!(Test-Path -Path $PS1Path))) {
throw "No pre-downloaded script exists and the script '$PS1URL' failed to download. Exiting."
} elseif ($response.StatusCode -eq 200) {
Remove-Item -Path $PS1Path -ErrorAction SilentlyContinue
[System.IO.File]::WriteAllLines($PS1Path, $response.Content)
}
if (!(Test-Path -Path $PS1Path)) {
throw 'An error occurred and the script was unable to be downloaded. Exiting.'
}
#endregion
#region Execution
if ($Parameters) {
$licenses = & $PS1Path @Parameters
} else {
$licenses = & $PS1Path
}
#endregion

if ( !(Test-Path $LogPath) ) {
throw 'PowerShell Failure. A Security application seems to have restricted the execution of the PowerShell Script.'
}
if ( $licenses ) {
$status = @()
foreach ( $license in $licenses ) {
$status += "ID - $($license.ID) Name - $($license.Name) License Status - $($license.LicenseStatus)"
}
return $status -join '\|'
} else {
return "No ESU Licenses found"
}
if ( Test-Path $ErrorLogPath ) {
$ErrorContent = ( Get-Content -Path $ErrorLogPath )
throw $ErrorContent
}

Script Example

Row 2 Function: Script Log

Add a new row by clicking the Add Row button.
Add Row Step 1

A blank function will appear.
Blank Function

Search and select the Script Log function.
Script Log Search
Script Log Selected

The following function will pop up on the screen:
Script Log Example

In the script log message, simply type %output% and click the Save button.
Script Log Save

Row 3 Function: Set Custom Field

Add a new row by clicking the Add Row button.
Add Row Step 2

A blank function will appear.
Blank Function

Search and select the Set Custom Field function.
Set Custom Field Search

The following function will pop up on the screen:
Set Custom Field Example

  • Search and select the Computer-Level Custom Field ESU Status from the Custom Field dropdown menu.
  • Set %Output% in the Value field.
  • Click the Save button.

Set Custom Field Save 1 Set Custom Field Save 2

Save Task

Click the Save button at the top-right corner of the screen to save the script.
SaveButton

Completed Task

Completed Task

Output

  • Script Log
    Script Log Output
  • Custom Field
    Custom Field Output