Agent Facts¶
Before EEI installs, upgrades or updates a connector on your Seeq agent host, it needs a short description of that host and of the connector's settings: the agent facts. You attach them to the support request EEI opens for the work; see Onboarding and Updating a Connector.
There are three ways to give them, and you choose one on the request's form:
| Way | What you do |
|---|---|
| The script (quickest) | Paste the read-only script below into PowerShell on the agent host, read the file it writes, and attach it |
| By hand | Look up the same facts yourself and reply with them: Without the script |
| EEI reads them in Seeq | Where EEI has an administrator account on your Seeq server, EEI reads most of them there, and you supply only three: With EEI access to your Seeq server |
None of the three includes a password, user name or domain. Please do not put credentials anywhere in the request.
Which connectors it covers¶
The script's steps 1–5 describe the agent host and apply to every EEI connector for Seeq. Step 6 reads a connector's own settings, and is written per connector:
| Connector | Step 6 | Its settings by hand |
|---|---|---|
| ABB Knowledge Manager | Yes | ABB Knowledge Manager |
| Metadata Connector | Not yet: the script still collects steps 1–5 | With EEI, on the request |
The script¶
Run it on the agent host in Windows PowerShell opened as administrator (Start menu → Windows
PowerShell → right-click → Run as administrator), with the Seeq agent running. It is for Windows
PowerShell 5.1 or PowerShell 7, not the ordinary Command Prompt (cmd.exe). Copy all of it, paste it into
the window, and press Enter.
If your Seeq data folder is not C:\ProgramData\Seeq\data, change the line near the top that names it, and
tell EEI where it is.
# =============================================================================================
# EEI agent facts: describes this Seeq agent host for your connector upgrade.
#
# This script only READS. It changes nothing, installs nothing, starts or stops nothing, and
# sends nothing over the network. It writes ONE file, <computer name>-seeq-agent-facts.json, on your
# Desktop, and shows it on screen so you can read it before you attach it to your request.
#
# It never copies a password, user name or domain. For each connection it records only HOW
# the password is kept (in the VForge store, in the file, as a reference, or not set).
#
# Each step below says what it reads. To check for yourself: the only command that writes
# anything is WriteAllText in step 7, and it writes only that one file. (New-Object in
# step 7 creates the text encoding in memory; it writes nothing.)
# =============================================================================================
# Your Seeq data folder. Change this only if Seeq keeps its data somewhere else.
$SeeqDataFolder = 'C:\ProgramData\Seeq\data'
# --- Step 1. This computer's name and Windows version, and when the facts were collected -----
$Windows = Get-CimInstance Win32_OperatingSystem -ErrorAction SilentlyContinue
$Facts = [ordered]@{
kind = 'eei-seeq-agent-facts'
schema = 1
collectedAt = (Get-Date).ToUniversalTime().ToString('yyyy-MM-ddTHH:mm:ssZ')
hostname = $env:COMPUTERNAME
os = [ordered]@{ name = $Windows.Caption; version = $Windows.Version }
dataFolder = $SeeqDataFolder
notes = @()
}
# --- Step 2. The Java the Seeq agent uses: its path, and the version in its file details -----
# The running Java if the agent is running; otherwise the Java inside the Seeq installation.
# Either way the version is read from the file's details: Java itself is never started.
$JavaFiles = @(Get-CimInstance Win32_Process -Filter "Name='java.exe'" -ErrorAction SilentlyContinue |
Where-Object { $_.ExecutablePath } | ForEach-Object { $_.ExecutablePath } | Select-Object -Unique)
$JavaRunning = $JavaFiles.Count -gt 0
if (-not $JavaRunning) {
$JavaFiles = @(Get-ChildItem 'C:\Program Files\Seeq*' -Recurse -Filter 'java.exe' -ErrorAction SilentlyContinue |
ForEach-Object { $_.FullName })
}
$Facts.java = @($JavaFiles | ForEach-Object { [ordered]@{
path = $_
version = (Get-Item $_).VersionInfo.ProductVersion
running = $JavaRunning } })
# --- Step 3. The Seeq Windows services: name, running or not, and the account each runs as ---
$Facts.services = @(
Get-CimInstance Win32_Service -ErrorAction SilentlyContinue |
Where-Object { $_.Name -like '*seeq*' } |
ForEach-Object { [ordered]@{ name = $_.Name; state = $_.State; startName = $_.StartName } }
)
# --- Step 4. The Seeq Link SDK version: the NAMES of the SDK files (not their contents) -------
$Facts.seeqLinkSdkJars = @(
Get-ChildItem 'C:\Program Files\Seeq*' -Recurse -Filter 'seeq-link-sdk*.jar' -ErrorAction SilentlyContinue |
ForEach-Object { $_.Name }
)
# --- Step 5. The installed connectors: folder NAMES only --------------------------------------
$Facts.connectorFolders = @(
Get-ChildItem (Join-Path $SeeqDataFolder 'plugins\connectors') -Directory -ErrorAction SilentlyContinue |
ForEach-Object { $_.Name }
)
# --- Step 6. The ABB Knowledge Manager connector's settings, never its passwords --------------
function Get-PasswordStorage($Value) {
# Says HOW a password is kept. The password itself is never returned or written.
$text = "$Value"
if ($text -eq '' -or $text -eq '********') { return 'blank' }
if ($text -eq 'VFORGE_SECRETS') { return 'store' }
if ($text -like 'SECRETS_FILE:*') { return 'reference' }
return 'inline'
}
$ConfigFile = Join-Path $SeeqDataFolder 'configuration\link\ABB KM Connector V3.json'
if (Test-Path $ConfigFile) {
$Config = Get-Content -Raw $ConfigFile | ConvertFrom-Json
$Facts.config = [ordered]@{
file = 'ABB KM Connector V3.json'
version = $Config.Version
virtualForgeEnabled = $Config.VForge.VirtualForgeEnabled
connections = @($Config.Connections | ForEach-Object { [ordered]@{
id = $_.Id
name = $_.Name
enabled = $_.Enabled
webServiceMethod = $_.WebServiceMethod
webServiceIP = $_.WebServiceIP
webServicePort = $_.WebServicePort
webServiceUrl = $_.WebServiceURL
tlsTrust = $_.VForge.Http.Tls.Trust
trustStore = $_.VForge.Http.Tls.TrustStore
credentialMode = (Get-PasswordStorage $_.Password)
hierarchyMode = $_.HierarchyMode
userTimeZone = $_.UserTimeZone
indexing = [ordered]@{ frequency = $_.Indexing.Frequency
onStartupAndConfigChange = $_.Indexing.OnStartupAndConfigChange }
maxConcurrentRequests = $_.MaxConcurrentRequests
maxResultsPerRequest = $_.MaxResultsPerRequest
monitoringEnabled = $_.VForge.Monitoring.Enabled
webServiceTimeout = $_.WebServiceTimeout
customFieldConfigurations = ($null -ne $_.FieldConfigurations) } })
}
} else {
$Facts.notes += "No ABB Knowledge Manager configuration at $ConfigFile"
}
# --- Step 7. Write <computer name>-seeq-agent-facts.json on your Desktop, and show it ---------
# (An Administrator PowerShell starts in C:\Windows\System32; the file goes to your Desktop instead.)
$OutFolder = [Environment]::GetFolderPath('Desktop')
if (-not $OutFolder -or -not (Test-Path $OutFolder)) { $OutFolder = $env:USERPROFILE }
$OutFile = Join-Path $OutFolder ($env:COMPUTERNAME.ToLower() + '-seeq-agent-facts.json')
$Json = $Facts | ConvertTo-Json -Depth 6
[IO.File]::WriteAllText($OutFile, $Json, (New-Object Text.UTF8Encoding $false))
$Json
"Written: $OutFile"
"Read it, then attach it to your request. It contains no passwords."
It writes <computer name>-seeq-agent-facts.json (in lowercase) on your Desktop, shows it on screen,
and prints its full path. Open it in Notepad, read it, and attach it to the request.
What it does, step by step¶
| Step | Reads | From | Why EEI asks |
|---|---|---|---|
| 1 | This computer's name and Windows version; the time | Windows | To match the license to this host, and to know the platform |
| 2 | The path and version of the Java the Seeq agent uses: the running one or, if the agent is stopped, the one inside the Seeq installation | The java.exe file details (Properties → Details); Java is never started |
EEI's connectors need Java 21 or newer |
| 3 | The Seeq services' names, whether they run, and the Windows account each runs as | Windows services (as in Services, Log On tab) | The connector's secrets store is restricted to that account |
| 4 | The names of the Seeq Link SDK files | C:\Program Files\Seeq* |
A connector loads only on a Seeq agent new enough for it |
| 5 | The names of the installed connector folders | <data folder>\plugins\connectors |
To confirm what is installed, and the version being replaced |
| 6 | For each connection of a connector it covers (above): its ID, name, on or off, server address, port and path, certificate setting, the connector's main settings, index schedule and request limits, and how its password is kept | The connector's configuration file, read only | What support needs to set up and check each connection |
| 7 | Nothing: it writes the file on your Desktop and shows it | — | So you can read it before you send it |
What it never does: read out or copy a password, user name or domain (step 6 keeps only how the
password is kept: store, inline, reference or blank); change, install, start or stop anything;
connect to the network; write anything except that one file. If you open PowerShell as administrator with a
different account, the file goes to that account's Desktop; the last lines on screen give its full path.
Checking it yourself. Every command in the script is a read: Get-CimInstance (Windows inventory),
Get-ChildItem (folder listings), Get-Item (file details), Get-Content (reads the configuration file).
The one write is [IO.File]::WriteAllText in step 7; New-Object in step 7 creates the text encoding in
memory and writes nothing. There is no Invoke-WebRequest, Invoke-RestMethod, Start-Process, Set-…,
Remove-… or New-Item.
Pasting the script runs it line by line, so your PowerShell execution policy does not block it. Your site's rules may still ask you to review a script before running it: the steps above are there for that.
Without the script¶
If you prefer not to run a script, or your site does not allow it, reply on the request with these. It takes a little longer and is the same information. First, the agent host, for every connector:
| Fact | Where to find it |
|---|---|
| Computer name | Settings → System → About → Device name |
| Java version | File Explorer → C:\Program Files\Seeq Server\jdk\files\bin\java.exe (or where your Seeq Server is installed) → right-click → Properties → Details → Product version |
| Seeq service account | Services (services.msc) → the Seeq service → Log On tab → This account (or Local System account) |
| Seeq Link SDK version | File Explorer → search C:\Program Files\Seeq Server for seeq-link-sdk → the file name, for example seeq-link-sdk-100.38.19649.jar |
| Installed connectors | File Explorer → C:\ProgramData\Seeq\data\plugins\connectors → the folder names |
Then the connector's settings, as its section below says. Please do not send a connector's configuration file itself unless EEI asks; if it does, remove every password, user name and domain first.
ABB Knowledge Manager¶
Open C:\ProgramData\Seeq\data\configuration\link\ABB KM Connector V3.json in Notepad without saving
it, and copy only the Version line near the top and, for each connection: Name, Id, Enabled,
WebServiceMethod, WebServiceIP, WebServicePort, WebServiceURL, HierarchyMode, UserTimeZone, and
the Indexing lines. Do not copy UserName, Password or Domain.
With EEI access to your Seeq server¶
Where EEI has an administrator account on your Seeq server (see Access to your Seeq server), EEI reads the agent's version and each datasource's settings in Seeq itself. You then supply only the computer name, the Java version and the Seeq service account, from the first three rows of the table above.
For an update¶
When a connector is already on the current line, EEI keeps these facts on record and asks you only to
confirm them (see Onboarding and Updating a Connector).
If something has changed, the same script gives EEI the new facts; once a connector's credentials are in its
secrets store, each connection's password is reported as store.