Kuddel071089 9 Geschrieben 29. September 2015 Melden Teilen Geschrieben 29. September 2015 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 Zitieren Link zu diesem Kommentar
testperson 1.677 Geschrieben 29. September 2015 Melden Teilen Geschrieben 29. September 2015 Hi, dann lies die Server entsprechend aus dem AD aus oder pack deine Server in ein Array und bau ne Schleife um die If-Abfrage. Gruß Jan Zitieren Link zu diesem Kommentar
NorbertFe 2.034 Geschrieben 29. September 2015 Melden Teilen Geschrieben 29. September 2015 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. Zitieren Link zu diesem Kommentar
Kuddel071089 9 Geschrieben 29. September 2015 Autor Melden Teilen Geschrieben 29. September 2015 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. Zitieren Link zu diesem Kommentar
Cybquest 36 Geschrieben 29. September 2015 Melden Teilen Geschrieben 29. September 2015 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. Zitieren Link zu diesem Kommentar
Kuddel071089 9 Geschrieben 29. September 2015 Autor Melden Teilen Geschrieben 29. September 2015 (bearbeitet) 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 29. September 2015 von Kuddel071089 Zitieren Link zu diesem Kommentar
Cybquest 36 Geschrieben 29. September 2015 Melden Teilen Geschrieben 29. September 2015 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. Zitieren Link zu diesem Kommentar
Kuddel071089 9 Geschrieben 29. September 2015 Autor Melden Teilen Geschrieben 29. September 2015 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 Zitieren Link zu diesem Kommentar
Cybquest 36 Geschrieben 29. September 2015 Melden Teilen Geschrieben 29. September 2015 zu 2: Indem Du beim Write-Host halt auch $Server.Name nimmst! Zitieren Link zu diesem Kommentar
Kuddel071089 9 Geschrieben 30. September 2015 Autor Melden Teilen Geschrieben 30. September 2015 zu 2: Indem Du beim Write-Host halt auch $Server.Name nimmst! Dann kommt folgende Ausgabe @{Name=VNTS124}.Name in WSUS Gruppe Zitieren Link zu diesem Kommentar
Kuddel071089 9 Geschrieben 30. September 2015 Autor Melden Teilen Geschrieben 30. September 2015 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 } } Zitieren Link zu diesem Kommentar
Dukel 454 Geschrieben 30. September 2015 Melden Teilen Geschrieben 30. September 2015 $($Server.Name) Zitieren Link zu diesem Kommentar
Kuddel071089 9 Geschrieben 1. Oktober 2015 Autor Melden Teilen Geschrieben 1. Oktober 2015 $($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 Zitieren Link zu diesem Kommentar
Beste Lösung Cybquest 36 Geschrieben 1. Oktober 2015 Beste Lösung Melden Teilen Geschrieben 1. Oktober 2015 (bearbeitet) Nu ja... Write-Host liefert auch kein Ergebnis zurück ;-) Einfach ne 2. Zeile dazu wäre ne Lösung "$($Server.Name) ist KEIN Mitlgied einer WSUS Gruppe" | Out-File C:\test.csv -append bearbeitet 1. Oktober 2015 von Cybquest Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.