m.c.trust
Goto Top

Powershell Remove-Item mit Daten aus einer Variable

Hallo Zusammen,

Es gibt einen Ordner, in welchem für jeden Client eine CSV angelegt ist. Bsp. "PC0001.csv"
In dem Ordner sind allerdings auch "Leichen" vorhanden, die es nicht mehr gibt.

Dafür lasse ich mir einen aktuellen Clientstand aus dem AD ausgeben. Diesen Auszug vergleiche ich mit dem Ordnerinhalt und lasse mir die jeweiligen "Leichen" ausgeben.

Jetzt wäre es noch ganz schön, wenn diese auch gleich aus dem Ordner gelöscht werden, das bekomme ich aber irgendwie nicht hin :/

$Pfad_CSV = "\\server01\pcs"  
$AD_Clients = get-adcomputer -filter 'Name -like "PC*"' | select -ExpandProperty Name  

$ADSSRV_Clients = Get-ChildItem -path $Pfad_CSV -filter "*csv*"  
$ADSSRV_Clients = $ADSSRV_Clients -replace ".{4}$"  

$Ausgabe = Compare-Object -ReferenceObject $AD_Clients -DifferenceObject $ADSSRV_Clients | ?{$_.Sideindicator -eq "=>"}  
$Ausgabe = $Ausgabe | select -ExpandProperty inputobject


Get-ChildItem -path $Pfad_CSV -Recurse | foreach {
Remove-Item -path \\server01\pcs\$Ausgabe.csv"  
}

Hier wird mir immer angezeigt, dass der Dateiname zu lang ist. Ich denke, weil er die $Ausgabe komplett beim Remove mit hinschreibt, statt die Zeilen einzeln durchzugehen.

Danke und viele Grüße

Content-Key: 3580909213

Url: https://administrator.de/contentid/3580909213

Printed on: April 27, 2024 at 03:04 o'clock

Member: Crusher79
Crusher79 Aug 08, 2022 updated at 08:32:42 (UTC)
Goto Top
Hallo ein " fehlt.

Außerdem brauchst du immer ein Value paar. Du kannst nicht mit einer Schleife einen Wert einen Array zuordnern. Bzw. hier schon, aber das Ergebnis ist schlichtweg falsch und wir hier folgerichtig mit Fehler quittiert!

Mit -notcontains kann man Fragen, weleches Item in der Liste NICHT vorhanden ist. Mit diesen einen Wert kannstdu weiterarbeiten.

Schau dir mal das Vergleichen von Listen an. Und auch sowas wie -notcontains.

Hier gibt es ein Beispiel dazu.

Hab gerade wenig Zeit und kann es nicht umschreiben.

mfg Crusher
Mitglied: 3479126418
Solution 3479126418 Aug 08, 2022 updated at 08:29:42 (UTC)
Goto Top
$Pfad_CSV = "\\server01\pcs"
$AD_Clients = get-adcomputer -filter 'Name -like "PC*"' | select -ExpandProperty Name
Get-ChildItem $Pfad_CSV -filter *.csv | ?{$_.Basename -notin $AD_Clients} | Remove-Item -Force -Verbose
Member: M.C.Trust
M.C.Trust Aug 08, 2022 at 09:04:01 (UTC)
Goto Top
Danke für die Antwort,

hat mir gut weitergeholfen und sehr interessant.
den Beitrag kann ich auch noch gut für etwas anderes bei mir Nutzen face-smile