Jump to content
Ben94

Ausgabe als CSV

Recommended Posts

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.

Edited by Ben94

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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.

Edited by BOfH_666

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


Werbepartner:



×
×
  • Create New...