Jump to content

Ausgabe als CSV


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

Empfohlene Beiträge

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 von Ben94
Link zu diesem Kommentar

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.. 

Link zu diesem Kommentar
  • Beste Lösung

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 von BOfH_666
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...