Выполнение той же задачи в пакетном режиме вместо PowerShell: перебрать всех пользователей и найти папку% temp% для удаления файлов внутри

У меня есть сценарий PowerShell, который работает как таковой: он удаляет все файлы или папки в C: \ users \% user1,2,3 ... etc% \ temp. Он просматривает каждого пользователя в папке пользователей и обнаруживает, есть ли у него временная папка, а затем удаляет содержимое внутри.

Мне нужно знать, как лучше всего сделать это в пакетном режиме, чтобы избежать проблем с совместимостью?

$users = Get-ChildItem C:\Users
foreach ($user in $users){
$folder = "$($user.fullname)\AppData\Local\temp"
   If (Test-Path $folder) {
     Get-ChildItem -Path $folder -Include * | remove-Item -recurse 
   }
}

person Kiril    schedule 27.08.2018    source источник
comment
В общем, если вы МОЖЕТЕ использовать PS (а не .bat), то вам, вероятно, СЛЕДУЕТ использовать PS. Q: Какие проблемы с совместимостью? Где именно НЕ МОЖЕТ запускать Powershell?   -  person paulsm4    schedule 27.08.2018
comment
Скрипты будут запускаться через Connectwise Automate, у нас уже есть .bat скрипт для запуска других очисток временных файлов, мы должны интегрировать его с остальными. На сотнях компьютеров становится очень сложно убедиться, что каждый из них может выполнять сценарии PS.   -  person Kiril    schedule 27.08.2018
comment
Позвольте мне перефразировать вопрос: почему не ПК с Windows может запускать Powershell? Потому что это Windows 95 (или старше)? Или что-то другое? Разве PS не входит в вашу стандартную сборку для рабочих станций и серверов Windows?   -  person paulsm4    schedule 27.08.2018
comment
Может ли ваша организация использовать GPO (объект групповой политики) для включения выполнения сценария PowerShell? 4sysops.com/archives/   -  person lit    schedule 27.08.2018
comment
Моя основная проблема в том, что я не могу изменить всю систему и то, как она настроена. Мне придется использовать сценарии .bat, пока мы все не согласимся прекратить использование пакетной службы. Так что не аппаратное / программное ограничение, а скорее ограничение людей.   -  person Kiril    schedule 27.08.2018


Ответы (1)


В пакетном файле можно выполнить следующие действия, чтобы просмотреть C: \ USERS и удалить элементы в папке TEMP:

for /d %%F in (c:\users\*) do del "%%F\appdata\local\temp\*" /s /q

Если вы запускаете это в командной строке, используйте только один знак процента, при использовании командного файла используйте два знака процента.

Эта команда перебирает все каталоги в C: \ USERS, а затем запускает DEL для папки AppData \ Local \ Temp, используя тихие и рекурсивные параметры. Это предполагает, что ваши профили пользователей хранятся в C: \ USERS. Если у вас есть причина искать профили повсюду, вам нужно настроить свой командный файл, чтобы сначала найти пути к профилям из реестра.

Как и весь код, который вы найдете в Интернете, протестируйте перед запуском в производство.

person Chris Kibble    schedule 27.08.2018
comment
Прекрасно, большое спасибо! Именно то, что я хотел сделать. - person Kiril; 27.08.2018
comment
@Kiril - я рада это слышать, не могли бы вы принять мой ответ? - person Chris Kibble; 28.08.2018