Я пытаюсь написать скрипт, который будет искать:
- Папки с конкретными именами.
- Файлы с определенными расширениями, в то время как
- Исключение определенных каталогов из поиска.
Как только поиск будет выполнен, я бы хотел, чтобы все 1 и 2 были удалены, а также родительские папки, если они не совпадают с 3. Вот что у меня есть:
#Define list of computers to search for the files and folders in question
$ComputerList = Get-Content -Path "C:\computers.txt"
#Define a function for searching files and folders based on criteria:
function search {
PROCESS {
$srcFolder ="C:\test"
Get-ChildItem $srcFolder -ErrorAction SilentlyContinue -recurse -Force | Where-Object {`
$_.Name -eq “keyword1” -or`
$_.Name -eq “keyword2” -or`
-and $_.fullname -notmatch 'C:\\Windows'`
-and $_.fullname -notmatch 'C:\\Program Files'
} | foreach-object -process { _.FullName }
}
}
foreach ($strComputer in $ComputerList)
{
#Perform the search function on all the computers listed
foreach ($objItem in $colItems)
{
write-host "-------------------------$strComputer ----------------" -foregroundcolor "red"
write-host " Files Found " -foregroundcolor "yellow" -backgroundcolor "black"
$ComputerList | search
"Number of files and folders found: " +($ComputerList | search | Measure-Object | Select-Object -ExpandProperty Count)
write-host "------------------------------------------------------------------" -foregroundcolor "red"
}
if (($ComputerList | search).count -lt 1) {
write-host "No files found to delete"
}
else {
#Prompt if you want to delete the files
write-host "Do you want to delete these files?" -foregroundcolor "yellow" -backgroundcolor "black"
$ComputerList | search | Remove-Item -Force -confirm
}
}
Out-File -FilePath C:\results.txt
Итак, вот какие у меня проблемы:
Я могу заставить скрипт работать. Однако я не уверен, как удалить родительскую папку, защищая исключенные.
Выход в файл не работает. Файл создается, но он пуст. Почему?
Посмотрев на Get-ChildItem | Get-Member
, я понял, что свойство Parent указано System.IO.DirectoryInfo Parent, поэтому, если я могу добавить это в список элементов, которые нужно удалить, оно должно работать.
Структура папок ниже. Чтобы повторить, возможно, более ясный способ, я хочу удалить папку:
- Чье имя или содержание соответствуют ключевым словам (ам)
- Если содержимое соответствует ключевому слову (ам), но имя папки не> проверяет, явно ли оно исключено, например, C: \ Windows, C: \ Program Files и т. Д.> Если это так, оставьте в покое. Если это не так, удалите папку. **
Вот простые URL:
oi42.tinypic.com/2nulmz4.jpg
oi43.tinypic.com/fwlxd0.jpg
oi42.tinypic.com/315hdw9.jpg