Ben94 0 Geschrieben 26. September 2019 Melden Teilen Geschrieben 26. September 2019 (bearbeitet) Guten Morgen zusammen, Ich habe folgendes Skript: $datei = "C:\Logs\Alt_Neu.txt" "Kundennummmer;Benutzer alt;Benutzer neu;" | Add-content $datei foreach ($group in $groups) { $User = Get-ADGroupMember -Identity $group.name $Benutzername = $User.Name $gefunden = "false" foreach ($Benutzer in $Benutzername) { $i = 0 $User1 = $Benutzer[0] while ($i -le 9 -and $gefunden -eq "false") { If($User1 -eq "$i") { $KD = $group.Name $i = 10 $gefunden = "true" $new = (($User) | Select-Object "Name" | Where-Object {$_.Name -like "$KD*"}) $old = (($User) | Select-Object "Name" | Where-Object {$_.Name -NotLike "$KD*"}) $new = $($new | Measure-Object).count $old = $($old | Measure-Object).count Write-Host "$group.name" ,";" ,"$old" ,";" ,"$new" ,";" | Add-content $datei | Out-File \\data01\d$\Skripte\Entwürfe\RDSlizensierung\DoppelteUser.csv } else { $i++ } } } } Hierzu möchte ich eine Ausgabe als CSV. Jedoch funktioniert es nicht einfach $datei als CSV auszugeben. Die Dateien sind dann entweder leer, oder nur mit Lengh beschrieben. Ich stehe ziemlich auf dem schlauch, vielleicht hat jemand von euch eine schnelle Lösung. Danke im vorraus Ben Ergänzung: $group ist auch definiert, nur nicht im Skriptabschnitt hinterlegt. bearbeitet 26. September 2019 von Ben94 Zitieren Link zu diesem Kommentar
Sunny61 806 Geschrieben 26. September 2019 Melden Teilen Geschrieben 26. September 2019 Export-CSV solltest Du dir anschauen: https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/export-csv?view=powershell-6 Zitieren Link zu diesem Kommentar
Ben94 0 Geschrieben 26. September 2019 Autor Melden Teilen Geschrieben 26. September 2019 Mit Export-CSV werden nur Lenght werte geschrieben. Bei Write Host kommt jedoch die richtige Ausgabe. Zitieren Link zu diesem Kommentar
MurdocX 949 Geschrieben 26. September 2019 Melden Teilen Geschrieben 26. September 2019 Einfach ist dein Code nicht zu lesen, aber ich möchte Dir auch helfen und schreibe mal meine Kommentare dazu. vor einer Stunde schrieb Ben94: $group Du meinst wohl $groups. $group wird ja durch die Iteration definiert. vor einer Stunde schrieb Ben94: $User = Get-ADGroupMember -Identity $group.name $Benutzername = $User.Name Den Schritt kannst du Dir sparen. Wenn du den Benutzernamen alias SamAccountName möchtest, dann nutze "Select-Object -ExpandProperty" vor einer Stunde schrieb Ben94: If($User1 -eq "$i") { $KD = $group.Name Warum vergleichst du die hochzählende Variable mit dem ersten Buchstaben von seinem Namen? vor einer Stunde schrieb Ben94: Write-Host "$group.name" ,";" ,"$old" ,";" ,"$new" ,";" Verwende Write-Out. Am Besten eine Variable, die du dann übergeben kannst. So ganz verstehe ich den Sinn nicht.. Zitieren Link zu diesem Kommentar
Beste Lösung BOfH_666 577 Geschrieben 26. September 2019 Beste Lösung Melden Teilen Geschrieben 26. September 2019 (bearbeitet) Wow ... vielleicht beschreibst Du uns erstmal, was Du eigentlich erreichen möchtest. Ich vermute, dass Du Dir das Leben viel zu schwer machst. Viele Sachen sind in Powershell eingebaut ... es ist ja schließlich für Admins gemacht ... nicht für Programmierer. Ergänzung: Dein Code ist wahnsinning schwer zu lesen weil er schlecht formatiert und strukturiert ist. Du benutzt englische und deutsche Begriffe gemischt und Du benutzt Variablennamen in Einzahl obwohl es ein Array (eine Liste) ist. Ausserdem erzeugst Du viele Variablen, die nicht nötig sind. Deine geschachtelte Schleife würde ich z.B. so schreiben: foreach ($GroupName in $Groups.Name) { $GroupMemberList = Get-ADGroupMember -Identity $GroupName foreach ($Groupmember in $GroupMemberList.Name) { ## ... mehr Code } } Dann vergleichst Du Namen von Gruppenmitgliedern mit einer Zahl ... If($User1 -eq "$i") ... ich vermute mal, dass diese Bedingung nicht so häufig zutrifft, oder? Weiter ... $gefunden = "false" $defunden = "true" dafür solltest Du die eingebauten boolschen Variablen $true und $false verwenden. Damit kann Powershell gut umgehen und sie sind nicht so fehleranfällig wie String-Vergleiche und Du brauchst quasi auch keine Variablen dafür zu erzeugen. bearbeitet 26. September 2019 von BOfH_666 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.