Find-EmpirumGroup

Moderator: moderators

Antworten
Jochen_Schmitt
Beiträge: 298
Registriert: 14. Dez 2004, 12:24
Wohnort: Reinheim
Kontaktdaten:

Find-EmpirumGroup

Beitrag von Jochen_Schmitt » 10. Mär 2017, 12:56

Hallo,

ich habe ein Problem, dass meine SDK Anfrage mit Find-EmpirumGroup länger als 1min läuft und somit einen TimeOut bekommt.

Die Abfrage schaut wie folgt aus:
$AllComputerGroups = (Find-EmpirumGroup -Session $Session -HasMember $ComputerObject -Include NestedGroups)

Die $Session und $ComputerObject Objekte sind korrekt befüllt.
Eine Abfrage ohne den -Include NestedGroups funktioniert schnell.
Nehme ich das ComputerObject aus einer Zuweisungsgruppe heraus, funktioniert die Abfrage auch wieder schnell.

Bzgl. LightTemplers Hinweis, habe ich das ehost.log auf dem Server geprüft.
Die Abfrage läuft 25min! und meldet am Ende das es 13 Gruppen (Objekte) gefunden hat.
Das Log habe ich auch bereits an den Support gesendet.

Also wird mir die Erhöhung des TimeOut auch nur bedingt helfen, den 25min. möchte ich nicht warten :).

Viele Grüße
Jochen

LightTempler
Beiträge: 407
Registriert: 23. Aug 2010, 13:47
Kontaktdaten:

Re: Find-EmpirumGroup

Beitrag von LightTempler » 10. Mär 2017, 14:26

Hallo Jochen,

lese ich das richtig, dann soll eine Liste aller Gruppen, denen auch tatsächlich Rechner zugewiesen sind, erstellt werden.

Was genau ist das Ziel, das letztlich erreicht werden soll?
Wie viele Gruppen, wie viele Rechner gibt es insgesamt?

Das PowerSehll CmdLet wird mit seinen Schaltern auf möglichst vielseitige Nutzbarkeit und nicht auf optimale Performance für jeden Einzelfall programmiert sein. Eine dedizierte Lösung in C# oder VB.NET könnte da meiner Erfahrung nach deutliche Vorteile bringen.

Grüße
LiTe

Jochen_Schmitt
Beiträge: 298
Registriert: 14. Dez 2004, 12:24
Wohnort: Reinheim
Kontaktdaten:

Re: Find-EmpirumGroup

Beitrag von Jochen_Schmitt » 10. Mär 2017, 14:34

Hallo LiTe,

das Find-EmpirumGroup mit -HasMember <ComputerObject> listet im Normalfall alle Gruppen auf, die der Computer zugehört. Damit bzw. mit weiteren Schleifen stelle ich fest, was dem Computer alles an Software zugewiesen ist. Wenn ich das ComputerObject "zwei Äster näher zur Wurzel" einhänge, funktioniert es in Windeseile, genauso wenn ich den Computer aus genau einer Zuweisungsgruppe mit einer Ebene herausnehme. So wie es ausschaut, werde ich die Tage beginnen an der API vorbei zu arbeiten, damit ich zu einer Lösung komme.

Danke an Dich jedoch mit dem Tipp bzgl. der ehost.log!

Viele Grüße
Jochen

Michael Tennert
Beiträge: 29
Registriert: 23. Jan 2019, 16:32
Kontaktdaten:

Re: Find-EmpirumGroup

Beitrag von Michael Tennert » 24. Jan 2019, 18:59

Hallo.
so etwa?

Set-ExecutionPolicy Unrestricted

$Logfile = '\\MATRIXSRV.MATRIX.LOC\Configurator$\Packages\matrix42\Remove Client from Empirum Groups and AD\2.0\MATRIX\Custom\LOG\$computername_RemoveClientfromGroups.log'
Add-Content $Logfile "$(get-date -f HH_mm_ss): Starting Script."


#
# Create Session Connect to API Server (normally Empirum Master Server)
#

#ServerName with installed API Service
$ServerName = "MATRIXSRV.MATRIX.LOC"

#DomainController
$DCName = "MATRIXSRV.MATRIX.LOC"

#Service Account for AclsD Support
$ADUserName = "matrix\Administrator"

#Port Protocol of API Service used for the SDK
$Port = "9200"
$Protocol = "HTTP"

#UserName who has rights to communicate with the API Service (need DB Role EMP_SERVICES)
$UserName = "matrix\Administrator"

#connect to AD with AES encrypted password
$EncryptedADPassword = ""


#connect with AES encrypted password
$EncryptedPassword = ""

#Connect to a given Matrix42 API Service

$session = Open-Matrix42ServiceConnection -Password xxxxxxx -ServerName MATRIXSRV.MATRIX.LOC -UserName matrix\Administrator -Port 9200 -Protocol HTTP

if($session -eq $null)
{
Write-Error "Connection to Empirum Session failed!"
Add-Content $Logfile "$(get-date -f HH_mm_ss): Connection to Empirum Session failed!"
exit 1
}

#
# Find out the groups of the client and remove it from all groups
#

$computer = $session.Computers | Where{ $_.Name -eq "$env:computername" -and $_.DomainName -eq "$env:userdomain" }

$groups = Find-EmpirumGroup -Session $session -HasMember $computer -Include NestedGroups > C:\EmpirumGroup.log


foreach($group1 in $groups)
{
$groupName=$group1.Name
$groupID=$group1.ID
Add-Content $Groupfile "Name: $groupName"
Add-Content $Groupfile "ID: $groupID"
Add-Content $Groupfile ""
'Remove-EmpirumComputerFromGroup -Session $session -Computer $computer -Group $group1
}
}

Antworten

Zurück zu „Empirum SDK“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast