Для экономии места на дисках, можно автоматически очищать ОС от временных данных.
Написал небольшой скрипт, который удаляет временные данные ОС с системного диска и профилей пользователей.
Скрипт представляет собой комплект приложения и задачи для импорта в планировщик задач ОС #Windows.
- Скопировать файл
app.temp.cleanup.ps1
в директорию C:\Scripts\
. - Импортировать задания
task.temp.cleanup.xml
в Windows Task Scheduler, откорректировать параметры задачи.
Скрипт забирает список профилей пользователей из реестра и удаляет в них временные данные. Следующие переменные можно откорректировать под задачу:
$SystemTemp
- системные директории с временными данными.$ProfileTemp
- директории с временными данными в профилях пользователей.$ProfileExclude
- исключить профили пользователей из сканирования.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
| <#PSScriptInfo
.VERSION 0.1.0
.GUID f5e8380e-4e2f-4c58-972e-a60ace8dee8e
.AUTHOR Kai Kimera
.AUTHOREMAIL mail@kai.kim
.COMPANYNAME Library Online
.COPYRIGHT 2024 Library Online. All rights reserved.
.TAGS windows temp cleanup
.LICENSEURI https://choosealicense.com/licenses/mit/
.PROJECTURI https://lib.onl/ru/2024/09/aaef951a-9caf-5765-8189-c91f3f305821/
#>
<#
.SYNOPSIS
Script for deleting temporary data.
.DESCRIPTION
The script deletes data in the specified directories.
.EXAMPLE
.\app.temp.cleanup.ps1
.LINK
https://lib.onl/ru/2024/09/aaef951a-9caf-5765-8189-c91f3f305821/
#>
# -------------------------------------------------------------------------------------------------------------------- #
# CONFIGURATION
# -------------------------------------------------------------------------------------------------------------------- #
$SystemTemp = @(
"C:\Windows\Temp\*"
)
$ProfileTemp = @(
"AppData\Local\Temp\*"
"AppData\Local\Mozilla\Firefox\Profiles\*.default-release\cache2\entries\*"
"AppData\Local\Microsoft\Windows\Explorer\*"
"AppData\Roaming\Mozilla\Firefox\Profiles\*.default-release\storage\default\*"
"AppData\Local\Google\Chrome\User Data\Default\Service Worker\CacheStorage\*"
"AppData\Local\Google\Chrome\User Data\Default\Cache\Cache_Data\*"
"AppData\Local\Google\Chrome\User Data\Default\Code Cache\js\*"
"AppData\LocalLow\Adobe\Acrobat\DC\ConnectorIcons\*"
"AppData\Local\Microsoft\Windows\INetCache\Content.Outlook\*"
)
$ProfileExclude = @(
'Администратор'
'Administrator'
'Setup'
'Public'
'All Users'
'Default User'
)
$ProfileList = 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList'
$Profiles = Get-ChildItem (Get-ItemProperty -Path "${ProfileList}").ProfilesDirectory -Exclude $ProfileExclude
# -------------------------------------------------------------------------------------------------------------------- #
# INITIALIZATION
# -------------------------------------------------------------------------------------------------------------------- #
function Start-Script() {
Start-CleanUp
}
# -------------------------------------------------------------------------------------------------------------------- #
# CLEANUP
# -------------------------------------------------------------------------------------------------------------------- #
function Start-CleanUp() {
ForEach ($Path in $SystemTemp) {
Remove-Data -Path "${Path}"
}
ForEach ($Profile in $Profiles) {
ForEach ($Path in $ProfileTemp) {
$Path = (Join-Path -Path "${Profile}" -ChildPath "${Path}")
if (Test-Path -Path "${Path}") { Remove-Data -Path "${Path}" }
}
}
}
# -------------------------------------------------------------------------------------------------------------------- #
# ------------------------------------------------< COMMON FUNCTIONS >------------------------------------------------ #
# -------------------------------------------------------------------------------------------------------------------- #
function Remove-Data() {
param(
[string]$Path
)
Remove-Item -Path "${Path}" -Recurse -Force -ErrorAction 'SilentlyContinue'
}
# -------------------------------------------------------------------------------------------------------------------- #
# -------------------------------------------------< RUNNING SCRIPT >------------------------------------------------- #
# -------------------------------------------------------------------------------------------------------------------- #
Start-Script
|
Для того, чтобы скрипт выполнялся автоматически по расписанию, я сделал XML-файл задачи. Его необходимо импортировать в планировщик задач Windows и откорректировать под свои требования:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
| <?xml version="1.0" encoding="UTF-16"?>
<Task version="1.2" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
<RegistrationInfo>
<Description>Script for deleting temporary data.</Description>
</RegistrationInfo>
<Triggers>
<CalendarTrigger>
<StartBoundary>2024-09-09T00:15:00</StartBoundary>
<Enabled>true</Enabled>
<ScheduleByWeek>
<DaysOfWeek>
<Sunday />
</DaysOfWeek>
<WeeksInterval>1</WeeksInterval>
</ScheduleByWeek>
</CalendarTrigger>
</Triggers>
<Settings>
<MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
<DisallowStartIfOnBatteries>true</DisallowStartIfOnBatteries>
<StopIfGoingOnBatteries>true</StopIfGoingOnBatteries>
<AllowHardTerminate>true</AllowHardTerminate>
<StartWhenAvailable>false</StartWhenAvailable>
<RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>
<IdleSettings>
<StopOnIdleEnd>true</StopOnIdleEnd>
<RestartOnIdle>false</RestartOnIdle>
</IdleSettings>
<AllowStartOnDemand>true</AllowStartOnDemand>
<Enabled>true</Enabled>
<Hidden>false</Hidden>
<RunOnlyIfIdle>false</RunOnlyIfIdle>
<WakeToRun>false</WakeToRun>
</Settings>
<Actions Context="Author">
<Exec>
<Command>powershell</Command>
<Arguments>"C:\Scripts\app.temp.cleanup.ps1"</Arguments>
</Exec>
</Actions>
</Task>
|