Jump to content

Check ob alle Compuerobjekte in Gruppen sind


Direkt zur Lösung Gelöst von Cybquest,
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo zusammen,

 

ich bin gerade dabei unsere WSUS-Einstellungen für unserer Server von oubasiert auf gruppenbasiert umzustellen.

 

Um zu prüfen, ob jeder Server in einer WSUS-Gruppe ist, wollte ich mir jetzt ein kleines Script schreiben.

 

Für einen Server bekomme ich es hin.

 

 

$server = "VNTS048"

if ((Get-ADComputer $server -Properties memberof).memberof -like "*CN=Role-GPO*")
{
$true
}
Write-Host -ForegroundColor Green "Server ist Mitlgied einer WSUS Gruppe"
{
Write-Host -ForegroundColor RED "Server ist KEIN Mitlgied einer WSUS Gruppe"
}

 

Jetzt müsste das Script allerdings automatische alle Server abfragen. Hat jemand eine Idee, wie ich das mache.

 

Danke schon einmal

Link zu diesem Kommentar

Wsus Gruppen sind aber dem Namen nach Gruppen in der wsus Datenbank, oder meinst du was anderes? Der wpp hat dafür übrigens eine Funktion, herauszufinden welche Computer im ad stehen aber nicht im wsus. Nur nicht gruppiert soweit ich mich erinnere.

 

ich habe im ad verschiedene wsus-sicherheitsgruppen erstellt. über diese gruppen werden verschiedene gpos zugewiesen, welche unterschiedliche wsus einstellung enthalten.

Link zu diesem Kommentar

Ne Liste der Server reinziehen und dann per for-each $Server in $Servers einfach ne Schleife drumrum bauen, wäre ne Möglichkeit.

Die Liste könnte aus Excel oder direkt aus'm AD kommen.

 

Export habe ich gemacht. SamAccountName alle Server in eine CSV. Enthält komischerweise als erstes eine Leerzeile und einen Trennstricht sowie ne Menge Leerzeichen die entfernt werden müssen.

 

 

 
SamAccountName
---------------
NTS087
NTS200
:

 

 

Wenn ich das ganze jetzt importiere

#Dialog zum importieren der CSV Datei mit den SamAccountNames der zu bearbeitenen Gruppen

Function Get-SaveFile($initialDirectory)

{

[System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms") |

Out-Null



$SaveFileDialog = New-Object System.Windows.Forms.SaveFileDialog

$SaveFileDialog.initialDirectory = $initialDirectory

$SaveFileDialog.filter = "CSV-Datei (*.csv)| *.csv"

$SaveFileDialog.ShowDialog() | Out-Null

$SaveFileDialog.filename

}







# Ausgewaehlte Datei in Varibale speichern

$pfad = Get-SaveFile







#Schleife für jede Gruppe in der Gruppen.csv Datei

$servers = Import-CSV $pfad

ForEach($server in $servers)

{

    if ((Get-ADComputer $server -Properties memberof).memberof -like "*CN=Role-GPO*")

{

}

else

{

Write-Host -ForegroundColor RED "$server ist KEIN Mitlgied einer WSUS Gruppe"

pause

}



}



bekomme ich eine Fehlermeldung

Get-ADComputer : Der Parameter "Identity" kann nicht gebunden werden. Der Wert "@{Name=NTS087}" kann nicht in den Typ "Microsoft.ActiveDirectory.Management.ADComputer" konvertiert

werden. Fehler: "Der Wert "@{Name=NTS087}" vom Typ "System.Management.Automation.PSCustomObject" kann nicht in den Typ "Microsoft.ActiveDirectory.Management.ADComputer" konvertiert

werden."

In Z:\ZBS\IB1-Powershell\Server\Abfragen\WSUS_Gruppen_Check_v0.1.ps1:32 Zeichen:22

+     if ((Get-ADComputer $server -Properties memberof).memberof -like "*CN=Role-GPO* ...

+                         ~~~~~~~

    + CategoryInfo          : InvalidArgument: (:) [Get-ADComputer], ParameterBindingException

    + FullyQualifiedErrorId : CannotConvertArgumentNoMessage,Microsoft.ActiveDirectory.Management.Commands.GetADComputer

 

Get-ADComputer : Der Parameter "Identity" kann nicht gebunden werden. Der Wert "@{Name=NTS200}" kann nicht in den Typ "Microsoft.ActiveDirectory.Management.ADComputer" konvertiert

werden. Fehler: "Der Wert "@{Name=NTS200}" vom Typ "System.Management.Automation.PSCustomObject" kann nicht in den Typ "Microsoft.ActiveDirectory.Management.ADComputer" konvertiert

werden."

In Z:\ZBS\IB1-Powershell\Server\Abfragen\WSUS_Gruppen_Check_v0.1.ps1:32 Zeichen:22

+     if ((Get-ADComputer $server -Properties memberof).memberof -like "*CN=Role-GPO* ...

+                         ~~~~~~~

    + CategoryInfo          : InvalidArgument: (:) [Get-ADComputer], ParameterBindingException

    + FullyQualifiedErrorId : CannotConvertArgumentNoMessage,Microsoft.ActiveDirectory.Management.Commands.GetADComputer

Hab das erstmal nur mit den beiden Servern NTS087 uind NTS200 getestet

bearbeitet von Kuddel071089
Link zu diesem Kommentar

Probiers mal mit nem Get-ADComputer $Server.Name

Oder, wenns eh nur ne Liste mit einer Zeile ist, statt Import-csv mit Get-Content $pfad

 

Als Fehler steht da ja, dass in Deinem $server nicht einfach nur der Servername, sondern quasi ein Objekt drin is.

 

Meine Schleife sieht jetzt wie folgt aus

 

ForEach($server in $servers)
{
    if ((Get-ADComputer $Server.Name -Properties memberof).memberof -like "*CN=Role-GPO*")
{
Write-Host -ForegroundColor Green "User $server in WSUS Gruppe"
sleep 2
}
else
{
Write-Host -ForegroundColor RED "$server ist KEIN Mitlgied einer WSUS Gruppe"
pause
}
}

 

Scheint zu funktionieren

 

Server @{Name=NTS087} in WSUS Gruppe
Server @{Name=NTS200} in WSUS Gruppe

 

Für Anfang schon mal sehr gut. Aber 2 Anmekrungen hab ich noch:

1. Wie kann ich meinen Export der Server sauberer hinbekommen, ohne die Leerzeile am Anfang, die Trennlinie und die ganzen Leerzeichen?

2. Ist es möglich die Namen richtig darzustellen ? @{Name=NTS087} NTS087 ?

 

Aber vielen Dank schon einmal für die Hilfe

Link zu diesem Kommentar

das Problem mit dem Export habe ich gelöst. Ich schreibe die Werte direkt in die Variable. Sprich ohne Ex- und Import.

 

Bleibt nur das Problem mit der Anzeige des Servernamens

 

 

$servers = Get-ADComputer -Filter {Name -like "*NTS*"} | sort | select Name
ForEach($server in $servers)
{
    if ((Get-ADComputer $Server.Name -Properties memberof).memberof -like "*CN=Role-GPO*")
{
Write-Host -ForegroundColor Green "$Server in WSUS Gruppe"
}
else
{
Write-Host -ForegroundColor RED "$Server ist KEIN Mitlgied einer WSUS Gruppe"
pause
}
}
Link zu diesem Kommentar

$($Server.Name)

 Perfekt hat geklappt.

 

Könnte ich mir das ganze jetzt auch noch in eine Datei schreiben lassen, die ich mir dann regelmäßig per Mail zukommen lassen?

 

 

...
Write-Host -ForegroundColor RED "$($Server.Name) ist KEIN Mitlgied einer WSUS Gruppe" | Out-File C:\test.csv
...

 

Mit Out-File habe ich leider eine leere Datei

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...