Powershell csv-Zeilen entfernen
Ich habe eine CSV-Datei ( file1
), die wie folgt aussieht: (User-dirs und die Größe)
Initials,Size
User1,10
User2,100
User3,131
User4,140
Habe ich eine andere CSV-Datei ( file2
), die wie folgt aussieht: (VIP-Nutzer)
User2
User4
Nun, was ich versuche zu tun, ist zu aktualisieren file1
, so wie es aussieht:
User1,10
User3,131
User2
und User4
ist entfernt, weil Sie in file2
Ich Sie bekommen können entfernt, aber zur gleichen Zeit ich entfernen Sie die Größe für alle Benutzer, also meine Ausgabe ist nur der Benutzer:
User1
User3
Mein code:
$SourcePath = "\\server1\info\SYSINFO\UsrSize"
$DestinationFile = "\\server1\info\SYSINFO\UsrSize\OverLimit\UsersOverLimit1.log"
$VIP_Exclusion_List = "\\server1\info\SYSINFO\UsrSize\OverLimit\_VIP_EXCLUSION_LIST.txt"
$Database = "\\server1\info\SYSINFO\UsrSize\OverLimit\_UsersOverLimitDATABASE.log"
$INT_SizeToLookFor = 100
dir $SourcePath -Filter usr*.txt | import-csv -delimiter "`t" |
Where-Object {[INT] $_."Size excl. Backup/Pst" -ge $INT_SizeToLookFor} |
Select-Object Initials,"Size excl. Backup/Pst" | convertto-csv -NoTypeInformation | % { $_ -replace '"', ""} | out-file $DestinationFile ;
$Userlist = import-csv $DestinationFile | Select-Object Initials |
convertto-csv -NoTypeInformation | % { $_ -replace '"', ""};
compare-object ($Userlist) (get-content $VIP_Exclusion_List) |
select-object inputObject | convertto-csv -NoTypeInformation |
% { $_ -replace '"', ""} | out-file "\\server1\info\SYSINFO\UsrSize\OverLimit\UsersOverLimitThisTime.log";
- Fand Teil der Antwort hier: stackoverflow.com/questions/15579316/... Nun brauche ich nur noch einen Weg finden, um es zu exportieren, um eine CSV-Datei wieder
- out-file funktioniert einwandfrei 🙂 Wird, fügen Sie den vollständigen neuen code, wenn die Seite erlaubt mir zu.
- export-csv ist die Cmd-Lassen, um eine CSV-Datei erstellen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn die Dateien klein sind-ish, und Sie kümmern sich nicht zu viel über Leistung, dann wäre das folgende eine triviale Art und Weise:
Einen schnelleren Weg wäre, den Namen zu entfernen, um einen Satz, aber angesichts der Dinge, die Sie hier sprechen, ich bezweifle, Sie bekommen in den Bereich von ein paar tausend oder Millionen Nutzer.
Löste ich es mit diesem code:
$ArrayVIP = get-content $VIP_Exclusion_List
select-string $DestinationFile -Muster $ArrayVIP -notmatch |
wählen Sie -erweitern Sie Zeilen - |
out-file $DestinationFile
Hier entnommen: Entfernen von Zeilen aus einer CSV