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 :/
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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
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
3 Kommentare
Neuester Kommentar
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
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
$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