Ваш FilesToKeep.csv
файл содержит списки имен файлов, например 1-123-X
.
Вы сравниваете это со свойством Name
, которое включает FileExtension
, поэтому вы сравниваете свой список только имена файлов с чем-то вроде \1-123-X_1.jpg
, которое включает расширение.
Для ясности сравнение выглядит следующим образом:
Name Sku
1-123-X_1.jpg 1-123-X_1 #doesn't match because Windows cares about the .jpg piece
Посмотрите, почему это не работает? Расширение находится в одной группе, а не в другой!
Исправить очень просто, просто сравните вместо этого со свойством BaseName
, например:
$files |
Where-Object BaseName -notin $filestokeep.sku |
Remove-Item -WhatIf
Это приведет к следующему вместо этого происходит сравнение:
BaseName Sku
1-123-X_1 1-123-X_1 #MATCHES!
И когда вы затем go вперед и запустите полный скрипт, вы увидите результат этого, показывающий, что произойдет, если вы удалите -WhatIf
.
What if: Performing the operation "Remove File" on target "C:\temp\Files\1-123-X_1.jpg".
What if: Performing the operation "Remove File" on target "C:\temp\Files\1-123-X_2.jpg".
What if: Performing the operation "Remove File" on target "C:\temp\Files\7-5468-XXX7.jpg".
What if: Performing the operation "Remove File" on target "C:\temp\Files\7-5468-XXX7_1.jpg".
What if: Performing the operation "Remove File" on target "C:\temp\Files\7-5468-XXX7_2.jpg".