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
Find-EmpirumGroup
Moderator: moderators
-
- Posts: 304
- Joined: 14. Dec 2004, 12:24
- Location: Reinheim
- Contact:
-
- Posts: 409
- Joined: 23. Aug 2010, 13:47
- Contact:
Re: Find-EmpirumGroup
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
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
-
- Posts: 304
- Joined: 14. Dec 2004, 12:24
- Location: Reinheim
- Contact:
Re: Find-EmpirumGroup
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
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
-
- Posts: 29
- Joined: 23. Jan 2019, 16:32
- Contact:
Re: Find-EmpirumGroup
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
}
}
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
}
}
Who is online
Users browsing this forum: No registered users and 5 guests