Hallo Gemeinde,
ich benötige mal eure Hilfe. Ich versuche gerade zu ermitteln, welche Computer sich in besagtem Filter befinden. 1. Ansatz: Ermitteln, ob ein Computer in einer Gruppe ist. Leider ermittelt der Befehl Find-EmpirumGroup mit -HasMember eine Gruppe. Mit der kann man zwar nichts anfangen, aber die Abfrage, ob KEINE Gruppe gefunden wurde, geht so in die Hose.
Hier mal das Script:
$Computername = "TEST-004"
### Verbinden mit der Empirum-API ###
# Aufruf der Verbindung
$EmpApiSession = Open-Matrix42ServiceConnection -ServerName $ServerName -Port $Port -UserName $APIUserName -EncryptedPassword $APIPassword
# Bei Verbindungsfehler Abbruch mit Fehlermeldung
if($EmpApiSession -eq $null)
{
Write-Error "Verbindung zur Empirumsitzung fehlgeschlagen!"
exit 5
}
Write-Output "."
Write-Output "Verbindung zur Empirumsitzung erfolgreich."
Write-Output "."
#Computer suchen
$ComputerObj = $EmpApiSession.Computers | where Name -eq $ComputerName
If ($ComputerObj)
{
Write-Host "$($ComputerObj.Name) in Empirum"
#Alle Gruppen mit dem ComputerObj suchen
$CompGroups = $false
$CompGroups = Find-EmpirumGroup -HasMember $ComputerObj -Session $EmpApiSession
$CompGroups.Expression
If ($CompGroups -eq $false)
{
Write-Host "Keine Gruppe gefunden"
}
Else
{
Write-Host "Computer Gruppen wurden ermittelt"
Foreach ($Group in $CompGroups)
{
#Prüfen, ob KonfigGrp
$CurCompGroup = $empApiSession.Groups | where ID -eq $Group.ID
If ($CurCompGroup.GroupType -eq "ConfigurationGroup")
{
Write-Host "Gruppenname: $($Group.Name)"
}
Else
{
Write-Host "$($Group.Name) keine Konfigurationsgruppe"
}
}
}
}
Else
{
Write-Host "Computer $Computername nicht in Empirum"
}
Hier das Ergebnis der Powershell:
Verbindung zur Empirumsitzung erfolgreich.
.
TEST-004 in Empirum
Computer Gruppen wurden ermittelt
Type NodeType Value CanReduce
---- -------- ----- ---------
System.Linq.EnumerableQuery`1[Matrix42.SDK.Contracts.Models.IEmpirumGroup] Constant {} False
Close Empirumsession
AUSFÜHRLICH: Close-Matrix42ServiceConnection completed successfully
Also wurde also mindestens eine Gruppe ermittelt, man kann sich auch per $CompGroups.Expression was anzeigen lassen. Aber leider funktioniert sonst nichts, z.B. count.
Hat einer eine Idee. Per SQL ist das kein Problem, ich will aber kein SQL einsetzen.
Ermitteln der Computer in 'Nicht zugeordnete Computer'
Moderator: moderators
-
- Posts: 522
- Joined: 06. Apr 2006, 22:01
- Location: Bochum
- Contact:
Re: Ermitteln der Computer in 'Nicht zugeordnete Computer'
Moin,
ich hatte das Problem auch schon. Ist irgendwie nicht sauber programmiert. Ich konnte das dann so lösen. Siehe .ID
$CompGroups = Find-EmpirumGroup -HasMember $ComputerObj -Session $EmpApiSession
If ($CompGroups.ID)
{
Write-Host "Gruppe gefunden!"
}
Else
{
Write-Host "Keine Gruppe gefunden!"
}
ich hatte das Problem auch schon. Ist irgendwie nicht sauber programmiert. Ich konnte das dann so lösen. Siehe .ID
$CompGroups = Find-EmpirumGroup -HasMember $ComputerObj -Session $EmpApiSession
If ($CompGroups.ID)
{
Write-Host "Gruppe gefunden!"
}
Else
{
Write-Host "Keine Gruppe gefunden!"
}
Frank Dethlefsen
Consultant und Coach
UPDATENOW GmbH
Frank.Dethlefsen@updatenow.de
https://empirum.blogspot.de/
Consultant und Coach
UPDATENOW GmbH
Frank.Dethlefsen@updatenow.de
https://empirum.blogspot.de/
Re: Ermitteln der Computer in 'Nicht zugeordnete Computer'
Hallo Herr Dethlefsen,
danke für die Antwort. Mein Kollege und ich haben auch weitergeforscht und sind zu folgendem Skript gekommen. Bei uns stimmen die Angaben. Das Skript braucht bei uns mit etwas mehr als 9000 Rechnern ungefähr 3 Minuten
Grüße
Ralf
Nachtrag: Mit der Abfrage auf ID läuft das Skript schneller, bei uns ca. 1:45 Minuten
danke für die Antwort. Mein Kollege und ich haben auch weitergeforscht und sind zu folgendem Skript gekommen. Bei uns stimmen die Angaben. Das Skript braucht bei uns mit etwas mehr als 9000 Rechnern ungefähr 3 Minuten
Code: Select all
#Alle Computer suchen
$ComputerObj = $EmpApiSession.Computers
If ($ComputerObj)
{
foreach ($Comp in $ComputerObj)
{
#Alle Gruppen mit dem Conputerobj suchen
$CompGroups = Find-EmpirumGroup -HasMember $Comp -Session $EmpApiSession | Where-Object {$_.GroupType -eq "ConfigurationGroup" -or $_.GroupType -eq "AssignmentGroup"}
If (!($CompGroups))
{
#Keine Gruppe gefunden
Write-Host "$($Comp.Name) in Empirum aber ohne Zuweisung"
# hier weitere Verarbeitung
}
}
}
Ralf
Nachtrag: Mit der Abfrage auf ID läuft das Skript schneller, bei uns ca. 1:45 Minuten
Who is online
Users browsing this forum: No registered users and 2 guests