Fragensteller
Mehrere Schleifen verschachteln

Allgemeine Diskussion
-
Hallo,
ich brauche etwas Hilfe.
In meinem Script lese ich, gefiltert, PC Namen aus einer Datenbank aus. In Summe brauche ich 750 PC Namen die ich in 5 Gruppen a 50 PC Namen und 5 Gruppen a 100 PC Namen verteile. Soweit funktioniert auch alles.
Wenn ich diese Gruppen habe, dann sollen die einzelnen PCs Mitglied einer weiteren Gruppe werden. Ich habe also 10 Gruppennamen.
Ich müsste also die 10 Gruppennamen auslesen, die ersten 50 PCs in die erste Gruppe stecken, dann den zweiten Gruppennamen auslesen und die nächsten 50 PCs in diese Gruppe stecken usw. aber das bekomme ich irgendwie nicht hin.
Kann mir jemand helfen?
$x = 50 $ReportFile = "D:\Powershell\Report\Office2007_" + $x + ".txt" $Office_Gruppen = "D:\Powershell\Quelle\Office_2007_Gruppen.txt" cd "emdb:\rootDSE\Managed Users & Computers\Clients\Alle Computer" $file = Get-EmdbComputer -Recurse -Filter "(&(!(Computer.OperationMode=0))(BasicInventory.LastKnownSite=66010)(!(Name:IgnoreCase=TLWK*))(!(Name:IgnoreCase=nb*))(BasicInventory.LastSyncDate:UtcDateTime>=2014-12-31T23:00:00)(!(Name:IgnoreCase=*-*))objectCategory=Computer))" $group = Get-Content $Gruppen $i = 0 $e = 749 $w = 249 $x = 49 $y = 100 $z = 50 # einlesen der PC Namen foreach ($computername in $file) { $i = $i + 1 Write-Host $i $computername.name $computername.name | Out-File -FilePath $ReportFile -Append $ReportFile = "D:\Powershell\Report\Office2007_" + $x + ".txt" If ($i -ge $e) {Exit } If ($i -ge $x) { If ($i -ge $w) { $x = $x + $y $ReportFile | Out-File -FilePath $Office_Gruppen -Append } else { $x = $x + $z $ReportFile | Out-File -FilePath $Office_Gruppen -Append } } }
IT Berater
- Typ geändert Denniver ReiningMVP, Moderator Freitag, 30. Juni 2017 10:27 ....
- Typ geändert Denniver ReiningMVP, Moderator Freitag, 30. Juni 2017 10:43 ....
- Typ geändert Denniver ReiningMVP, Moderator Freitag, 30. Juni 2017 10:43
Alle Antworten
-
Hallo,
wo genau liegt aktuell das Problem? Wird ein Fehler ausgegeben oder erhältst du nicht das erwartete Resultat?
Bist du dir sicher, dass die Zuweisung in der 6. Zeile so richtig ist?
6 $group = Get-Content $Gruppen
Vermutlich hast du zuvor nirgendwo die Variable $Gruppen definiert, vielleicht hängt es schon hierran.
Außerdem ist Get-EMDBComputer kein reguläres PowerShell Cmdlet, sondern gehört zu einem Snap-In welches von einem Drittanbieter stammt. Falls du hiermit Probleme haben solltest, wende dich bitte an den Support von NWC-Services [1].
Ich hoffe ich konnte dir weiterhelfen.
[1] https://www.nwc-services.deViele Grüße,
Disclaimer:
Robin O. König
TechNet Deployment HotlineBitte haben Sie Verständnis dafür, dass wir hier auf Rückfragen gar nicht oder nur sehr zeitverzögert antworten können.
Bitte nutzen Sie für Rückfragen oder neue Fragen den telefonischen Weg über die TechNet Deployment Hotline: http://technet.microsoft.com/de-de/ff959330TechNet Deployment-Hotline
Telefon: 0800-6087338*
Email: msdn-technet-support@escde.net* 16:00 – 18:00 Uhr (außer an bundeseinheitlichen Feiertagen). Kostenfrei aus dem dt. Festnetz, Mobilfunknetz ggfs. abweichend. Anrufer aus Österreich und der Schweiz können die Telefon-Hotline aus technischen Gründen über +49 721 693 7233 zum Tarif für Auslandsverbindungen des jeweiligen Telefonanbieters erreichen.
Es gelten Nutzungsbedingungen, Hinweise zu Markenzeichen sowie die allgemein gültigen Informationen zu Datenschutz und Cookies. Bitte beachten Sie auch die gesonderten Nutzungsbedingungen für die Deployment-Hotline.
-
Hallo,
mein Problem ist, dass ich im Augenblick keine Idee habe, wo ich was einbinden kann das ich die Clients den neuen Gruppen zuweisen kann. Die Zeile 6 ist noch ein Rest von einem Versuch.
Das Script erzeugt so wie es ist erst mal die gewünschten 10 Gruppen mit 50 bzw. 100 Clients und schreibt diese in entsprechende Dateien. Das Schreiben der Dateien ist aber sicherlich nicht notwendig, wenn ich die Clients sofort der neuen Gruppe zuweisen kann.
Mir fehlt im wesentlichen noch die Idee wie und wo ich die neuen Gruppen einlesen kann damit die Clients sofort richtig zugewiesen werden können.
Liebe Grüße
Norbert
IT Berater
-
Hallo Norbert,
wenn ich es richtig verstanden habe, geht es dir in erster Linie um die verschachtelten Schleifen um deine 50 bzw 100 PC´s einer Gruppe zuzuweisen.
$Groups = @("Group1","Group2","Group3","Group4","Group5","Group6","Group7","Group8","Group9","Group10") $Computers = @() 0..749 | ForEach-Object {$Computers += "Computer$_"} $ComputerOffset = 0 $GroupOffset = 0 for ($i = 0; $i -lt 5; $i++) { for ($j = 0; $j -lt 50; $j++) { Write-Host "Adding $($Computers[$ComputerOffset +$j]) to $($Groups[$i])" } $ComputerOffset += 50 $GroupOffset ++ } for ($i = 0; $i -lt 5; $i++) { for ($j = 0; $j -lt 100; $j++) { Write-Host "Adding $($Computers[$ComputerOffset+$j]) to $($Groups[$GroupOffset+$i])" } $ComputerOffset += 100 }
Habe mal versucht das nachzustellen, hoffe es hilft dir weiter...
Geht es hierbei um AD Gruppen?
Gruß
Tim
- Bearbeitet Tim Bitzer_ Freitag, 30. Juni 2017 09:30
-
Hallo Tim,
... und willkommen im deutschen MS Technet Powershell Forum. Dein Enthusiasmus und Deine Hilfsbereitschaft in allen Ehren, aber der Thread ist gut 2 Jahre alt. Ich würde mal vermuten, dass Norbert bei diesem Thema inzwischen sowieso entweder aufgegeben hat, oder hoffentlich an anderer Stelle Hilfe gefunden hat.
Ich fände es gut, wenn Du in Zukunft nicht uralte Threads wieder aktivierst.
Grüße - Best regards
PS:> (79,108,97,102|%{[char]$_})-join''