Hallo Zusammen,
ich suche auch gerade für unseren Field Service eine Möglichkeit Computer sauber aus Empirum zu löschen.
Generell geht das ja über Suchen und dann markieren und löschen relativ Komfortabel. Dann noch unter nicht zugeordnet aus der DB entfernen.
Aber unser Problem ist dann aber das unter den Konfigurationsgruppen immer die Computergruppe zurückbleibt mit den Softwarezuweisungen aber ohne Computerobjekt.
Da wenn ich ja einem Computerobjekt in den Konfigruppen etwas zuweise eine neue Gruppe mit dem Namen des Computers erstellt wird.
Gibt es hierzu eine Möglichkeit dies sauber zu löschen? Das Tool Replace Computer macht dies ja ohne neuen Rechner leider auch nicht. Bzw kann das vllt als Feature gewünscht werden das es ein Tool von der neo42 gibt Delete Computer an Konfiggroups 
Grüße Danke
Hallo Roland,
ein CustomSkript via Empirum API, welche nach Gruppen mit dem selben Computernamen sucht und diese ebenfalls löscht.
Da war ich zu langsam ^^
So wie DBT schreibt, oder per SQL-Abfrage (hätte ich gemacht).
Grüße,
Paketbote
Danke.
Leider war bzw bin ich in Empirum Scripttechnisch ein Laie noch keine Berührung mit gehabt.
Habt ihr da ein paar beispiele 
Hallo rolandBB,
wenn Du das Matrix42 Empirum SDK installierst dann findest Du eine Dokumentation und Beispiele im Ordner C:\Program Files\Matrix42\SDK\Empirum\Samples.
Insbesondere die „ComputerActivationSamples.ps1“ (mit dem Deaktivieren von Computern) und „ComputerEndOfLifeSamples.ps1“ (mit dem Löschen von Computern und Gruppen) hat uns hier geholfen.
ich denke Du kannst die auf deine Bedürfnisse anpassen.
Für die Datenbank kann ich dir keine Beispiele geben, da musst du selbst mal die Tabellen durchsuchen und dir dann zusammenbasteln, was du gerne hättest.
Ich nutze das hauptsächlich um Unstimmigkeiten zwischen Empirum und Servicestore herauszufinden und die betroffenen Rechner dann im jeweiligen System zu korrigieren.
Bspw. lasse ich mir ausgeben, welche Rechner im Assetmanagement nicht auf aktiv stehen, jedoch noch in Empirum vorhanden sind, weil jemand gepennt hat.
Mit Gruppen habe ich bisher nichts gemacht, deshalb kann ich dir da auch keine Tabellen nennen, wo die drinstehen würden. Aber vielleicht ist es über das SDK auch einfacher, damit habe ich noch nicht gearbeitet.
Grüße,
Paketbote
Hier ein Beispielskript von mir, womit Clients von einer definierten CSV in Empirum gelöscht werden können.
<#
.SYNOPSIS
.DESCRIPTION
This script imports a computerlist (CSV) and delete them if they are present in the Empirum DB
.OUTPUTS
Logfile
.NOTES
Version: 1.0
Author: DBT - neo42 GmbH
Creation Date: 17.02.2023
Purpose/Change:
.LINK
https://neo42.de
.EXAMPLE
.\DeleteClientsFromEmpDB.ps1 -EmpApiUserPara "demo\empapi" -EmpApiPwdPara "X33333333C4D8255ECA0977EA78CD3C3569DB7343EA4F548D10D0E744F29CCD85D10EE4F4E3AB4FF70862BC38E8"
#>
######################### Start Parameter definitions ##################################
param(
[string]$EmpApiUserPara,
[string]$EmpApiPwdPara
)
######################### End Parameter definitions ####################################
######################### Start Variable definitions ###################################
# ---- Empirum API Variables
[string]$empServer = "VI01-EMP01"
[string]$empApiProtocol = "HTTP"
[bool]$empApiSSL = $false
[string]$empApiPort = "9200"
[string]$empApiUser = "x\x"
# Create with "Empirum\AddOns\Encrypter\EmpCrypt.exe /AES256 PlainTextPassword"
[string]$empApiPwd = "x"
# ---- Log Variables
[string]$global:LogFile = "$PSScriptRoot\DeleteClients.log"
######################### End Variable definistions ####################################
######################### Start functions ##############################################
function Write-Log($Text)
{
[string]$logTime = Get-Date -Format 'dd.MM.yyyy HH:mm:ss'
Write-Output "$logTime - $Text" | Out-File "$global:LogFile" -Append
}
######################### End functions ################################################
######################### Start Main script ############################################
# ---- Parameterüberprüfung
If (![string]::IsNullOrEmpty($EmpApiUserPara))
{
$empApiUser = $EmpApiUserPara
}
If (![string]::IsNullOrEmpty($EmpApiPwdPara))
{
$empApiPwd = $EmpApiPwdPara
}
# ---- Empirum Connection String
[PSCustomObject]$empApiSession = Open-Matrix42ServiceConnection -ServerName $empServer -UserName $empApiUser -Port $empApiPort -Protocol $empApiProtocol -EncryptedPassword $empApiPwd -IsSecured $empApiSSL
If ($empApiSession)
{
Write-Log "Empirum API Version = $($empApiSession.ApiVersion)"
Write-Log "Empirum SDK Version = $($empApiSession.SdkVersion)"
}
else
{
Write-Log "Cannot connect to Empirum API Server" <# Action when all if and elseif conditions are false #>
}
# ---- CSV file (can be generated with second script)
$CSV = "E:\neo42\$((Get-Date).ToString('dd-MM-yyyy'))_inactive_computers.csv"
# ---- Check if the CSV file exists, if not script will be exited
if (!(Test-Path $CSV)) {
Write-Log "CSV file not found at $CSV. Exiting script."
Exit
}
# ----Read the CSV file
$computersToDelete = Import-Csv -Path $CSV
# ---- delete process
foreach ($computer in $computersToDelete)
{
# Get the computer object from the Empirum database
#$computerObject = Get-EmpirumComputer -Session $empApiSession -Filter "name eq '$computer'"
$EmpComputerName = $computer.Name
$computerObject = $empApiSession.Computers | Where Name -eq $EmpComputerName -ErrorAction SilentlyContinue
# Delete the computer object
if ($computerObject)
{
Remove-EmpirumComputer -Session $empApisession -Computer $computerObject
Write-Log "Successfully deleted Computer $($computer.Name) from Empirum."
} else {
Write-Log "Could not find Computer $($computer.Name) in Empirum."
}
}
Close-Matrix42ServiceConnection -Session $empApiSession
Das Ganze kann als Basis genutzt werden bzw. erweitert werden, um die Gruppen mitzulöschen.