lennox2844
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-ID: 3580909213

Url: https://administrator.de/forum/powershell-remove-item-mit-daten-aus-einer-variable-3580909213.html

Ausgedruckt am: 31.01.2025 um 00:01 Uhr

Crusher79
Crusher79 08.08.2022 aktualisiert um 10:32:42 Uhr
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
3479126418
Lösung 3479126418 08.08.2022 aktualisiert um 10:29:42 Uhr
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
LennoX2844
LennoX2844 08.08.2022 um 11:04:01 Uhr
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