Jump to content

CSV doppelte Zeilen löschen


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Geschrieben

weiß nicht ob das für mich noch so sehr viel Sinn macht, bin eigentlich in den meisten Fällen mit dem guten alten Batch gut zurecht gekommen, ist für mich auch wesentlich leichter lesbar, in Powershell sind mir definitiv zuviel geschweifte Klammern ;), da bekomm ich Augenkrebs. Aber ich schaue mal was Tante Google sagt

 

Trotzdem erst mal recht herzlichen Dank

Um Deien Frage zu beantworten, je es steht was bei Tante Google, aber wie bei so vielen Quelen was PS angeht passiert wieder mal nichts:

 

Import-Csv .\OutputFiltered.csv | sort Hostname

 

 

ok ich habs jetzt (blindes Huhn findet auch mal nen Korn lach)

 

Import-Csv -Path 'C:\SC\CSVmerge\OutputFiltered.csv' | sort -Property "Hostname" | Export-CSV -Path C:\SC\CSVmerge\OutputSortedEnd.csv -Delimiter ',' -NoTypeInformation

 

ein schönes Wochende noch

Geschrieben
Am 13.11.2021 um 16:30 schrieb cj_berlin:

Mein obiger Code war damit in unter zwei Sekunden fertig. Dahingegen hat auf demselben Rechner allein der Part mit Select -Unique 30-40 Sekunden in Anspruch genommen.

Du warst auch zu oft auf der Powershell Conf EU :grins1::thumb1:

Geschrieben

Na vielleicht tret ich der Sache ja noch etwas näher, manches ist ja wirklich eleganter als beim guten alten Batch. Bei der Gelegenheit würd ich gern noch eine kleine Frage einflechten. In meinem kleinen InventoryScript habe ich eine Variable defniert, welche sich aus der Systembeschreibung ergibt. Dort steht standardmässig sowas wie Name, Vorname - PC.  Zudammen mit anderen definierten Systemvariablen wird dieses dann in eine csv gepackt. Sieht auschnittsweise so aus:

 

$BeschreibungKey = 'HKLM:\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters'
$BeschreibungTest = Test-Path $BeschreibungKey
$BeschreibungSrvcomment = (Get-ItemProperty $BeschreibungKey).Srvcomment
Write-Verbose "Beschreibung Srvcomment: $BeschreibungSrvcomment" -Verbose

$Description = $BeschreibungSrvcomment

 

 

Am Ende wird halrt eine CSV geschrieben, und zwar derart:

 

#CSV Ausgbe
$Ausgabe = [PSCustomObject]@{
.
.
'Beschreibung'     =$Description;
.
.
  }
    $Ausgabe | Export-Csv -Path $DestinationFolder\Ausgabe.csv -NoTypeInformation

Das Problem hierbei ist das Komma in der Beschreibung, leider bekomme ich es nicht hin, dass er mir hier keine zweite Spalte aufmacht, klar wegen dem Komma im csv. Kann ich da irgendwie eine Ausnahme erstellen für diese Variable, oder wäre die einzige Lösung einen anderen delimiter zu nehmen? Leider bin ich bei Google nicht so richtig fündig geworden

 

 

 

lg und schönen Abend

 

 

Stef

 

 

 

 

 

 

 

Geschrieben
vor 2 Stunden schrieb stefan4711:

leider bekomme ich es nicht hin, dass er mir hier keine zweite Spalte aufmacht, klar wegen dem Komma im csv.

In einem strandard-konformen CSV ist das kein Problem, weil das Komma, welches in der Beschreibung auftaucht zwischen Gänsefüßchen eingeschlossen wird.  ;-) 

Geschrieben
vor 8 Minuten schrieb BOfH_666:

In einem strandard-konformen CSV ist das kein Problem, weil das Komma, welches in der Beschreibung auftaucht zwischen Gänsefüßchen eingeschlossen wird.  ;-) 

...und PowerShell legt den Standard beim Exportieren sogar so aus, dass *jeder* String in Gänsefüßchen eingeschlossen wird, egal, ob er den Delimiter enthält oder nicht. Beim Importieren werden aber RFC4180-konforme Dateien korrekt importiert.

Geschrieben (bearbeitet)

So danke erst mal noch, leider scheint es so nicht ganz zu funktionieren, denke habe mich wieder mal falsch ausgedrückt. Die Server Bezeichnung wird immer nach folgendem Muster gebildet: Mustermann, Vorname - PC.

 

Ich habe es jetzt nach deinem Vorschlag so stehen:

$BeschreibungKey = 'HKLM:\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters'
$BeschreibungTest = Test-Path $BeschreibungKey
$BeschreibungSrvcomment = (Get-ItemProperty $BeschreibungKey).Srvcomment
Write-Verbose "Beschreibung Srvcomment: $BeschreibungSrvcomment" -Verbose
 
$Description = $BeschreibungSrvcomment




#Ausgabe

'Beschreibung'     = $(-join ("`'", $Description, "`'"));

Was er nun macht ist folgendes (oben die Spaltennamen):

 

Hostname             Beschreibung      Seriennummer    .... ... ..  ....

'Mustermann       Vorname - PC'      ............

 

Er macht also 2 Fehler, er teilt den String weiterhin auf eine zweite Spalte auf, in der sonst was ganz anderes stehen soll, es werden zusätzlich noch 2 überflüssige ' erzeugt. Irgendwas scheint an der Syntax noch nicht zu stimmen. Also nochmal, Für dieses Feld soll das , als Delimiter ignoriert werden, weil Komma bedeutet ja neue Spalte.

 

 

lg

 

 

Stef

 

bearbeitet von stefan4711
Geschrieben (bearbeitet)

ok sorry war mein Fehler, es lag wohl an meiner nächsten csv Spalte

'SMB'                   =$smbt -replace ".{1}$";

 

Die Apostrophs hab ich jetzt auch weg, habe einfach das "`-",  jeweils gelöscht

 

 

 

lg und danke nochmals

 

 

stef

bearbeitet von stefan4711
Geschrieben (bearbeitet)
vor 2 Minuten schrieb stefan4711:

kann man dass irgendwie gerade rücken?

Was verstehst Du darunter? Wenn Du damit meinst, ob man die Umlaute gegen die entsprechende Buchstabenkombination ohne Umlaute ersetzen kann .... ja, klar ... geht. ;-) 

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