Win 10.ps1 94 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770
  1. # Remove all text from the current display
  2. # Очистить экран
  3. Clear-Host
  4. # Сlear $Error variable
  5. # Очистка переменной $Error
  6. $Error.Clear()
  7. # Get information about the current culture settings
  8. # Получить сведения о параметрах текущей культуры
  9. IF ((Get-Culture).Name -eq "ru-RU")
  10. {
  11. $RU = $true
  12. }
  13. # Turn off diagnostics tracking services
  14. # Отключить службы диагностического отслеживания
  15. $services = @(
  16. # Connected Devices Platform service
  17. # Служба платформы подключенных устройств
  18. "CDPSvc",
  19. # Connected User Experiences and Telemetry
  20. # Функциональные возможности для подключенных пользователей и телеметрия
  21. "DiagTrack",
  22. # Data Usage
  23. # Использование данных
  24. "DusmSvc",
  25. # SSDP Discovery
  26. # Обнаружение SSDP
  27. "SSDPSRV"
  28. )
  29. Get-Service -Name $services | Stop-Service -Force
  30. Get-Service -Name $services | Set-Service -StartupType Disabled
  31. # Turn off the Autologger session at the next computer restart ###
  32. # Отключить сборщик AutoLogger при следующем запуске ПК
  33. Update-AutologgerConfig -Name AutoLogger-Diagtrack-Listener -Start 0
  34. # Turn off the SQMLogger session at the next computer restart
  35. # Отключить сборщик SQMLogger при следующем запуске ПК
  36. Update-AutologgerConfig -Name SQMLogger -Start 0
  37. # Set the operating system diagnostic data level to "Basic"
  38. # Установить уровень отправляемых диагностических сведений на "Базовый"
  39. New-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\DataCollection -Name AllowTelemetry -Value 1 -Force
  40. # Turn off Windows Error Reporting
  41. # Отключить отчеты об ошибках Windows для всех пользователей
  42. New-ItemProperty -Path "HKLM:\Software\Microsoft\Windows\Windows Error Reporting" -Name Disabled -Value 1 -Force
  43. # Change Windows Feedback frequency to "Never"
  44. # Изменить частоту формирования отзывов на "Никогда"
  45. IF (-not (Test-Path -Path HKCU:\Software\Microsoft\Siuf\Rules))
  46. {
  47. New-Item -Path HKCU:\Software\Microsoft\Siuf\Rules -Force
  48. }
  49. New-ItemProperty -Path HKCU:\Software\Microsoft\Siuf\Rules -Name NumberOfSIUFInPeriod -Value 0 -Force
  50. # Turn off diagnostics tracking scheduled tasks
  51. # Отключить задачи диагностического отслеживания
  52. $tasks = @(
  53. "ProgramDataUpdater",
  54. "Microsoft Compatibility Appraiser",
  55. "Microsoft-Windows-DiskDiagnosticDataCollector",
  56. "TempSignedLicenseExchange",
  57. "MapsToastTask",
  58. "DmClient",
  59. "FODCleanupTask",
  60. "DmClientOnScenarioDownload",
  61. "BgTaskRegistrationMaintenanceTask",
  62. "File History (maintenance mode)",
  63. "WinSAT",
  64. "UsbCeip",
  65. "Consolidator",
  66. "Proxy",
  67. "MNO Metadata Parser",
  68. "NetworkStateChangeTask",
  69. "GatherNetworkInfo",
  70. "XblGameSaveTask",
  71. "EnableLicenseAcquisition",
  72. "QueueReporting",
  73. "FamilySafetyMonitor",
  74. "FamilySafetyRefreshTask"
  75. )
  76. Get-ScheduledTask -TaskName $tasks | Disable-ScheduledTask
  77. # Turn off "The Windows Filtering Platform has blocked a connection" message
  78. # Отключить в "Журналах Windows/Безопасность" сообщение "Платформа фильтрации IP-пакетов Windows разрешила подключение"
  79. auditpol /set /subcategory:"{0CCE9226-69AE-11D9-BED3-505054503030}" /success:disable /failure:disable
  80. # Set File Explorer to open to This PC by default
  81. # Открывать "Этот компьютер" в Проводнике
  82. New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced -Name LaunchTo -Value 1 -Force
  83. # Show Hidden Files, Folders, and Drives
  84. # Показывать скрытые файлы, папки и диски
  85. New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced -Name Hidden -Value 1 -Force
  86. # Show File Name Extensions
  87. # Показывать расширения для зарегистрированных типов файлов
  88. New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced -Name HideFileExt -Value 0 -Force
  89. # Hide Task View button on taskbar
  90. # Не показывать кнопку Просмотра задач
  91. New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced -Name ShowTaskViewButton -Value 0 -Force
  92. # Show folder merge conflicts
  93. # Не скрывать конфликт слияния папок
  94. New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced -Name HideMergeConflicts -Value 0 -Force
  95. # Turn off Snap Assist
  96. # Не показывать при прикреплении окна, что можно прикрепить рядом с ним
  97. New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced -Name SnapAssist -Value 0 -Force
  98. # Turn off check boxes to select items
  99. # Отключить флажки для выбора элементов
  100. New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced -Name AutoCheckSelect -Value 0 -Force
  101. # Show seconds on taskbar clock
  102. # Включить отображение секунд в системных часах на панели задач
  103. New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced -Name ShowSecondsInSystemClock -Value 1 -Force
  104. # Hide People button on the taskbar
  105. # Не показывать панель "Люди" на панели задач
  106. IF (-not (Test-Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\People))
  107. {
  108. New-Item -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\People -Force
  109. }
  110. New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\People -Name PeopleBand -Value 0 -Force
  111. # Hide all folders in the navigation pane
  112. # Не отображать все папки в области навигации
  113. New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced -Name NavPaneShowAllFolders -Value 0 -Force
  114. # Turn on acrylic taskbar transparency
  115. # Включить прозрачную панель задач
  116. New-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced -Name UseOLEDTaskbarTransparency -Value 1 -Force
  117. # Turn off app launch tracking to improve Start menu and search results
  118. # Не разрешать Windows отслеживать запуски приложений для улучшения меню "Пуск" и результатов поиска и не показывать недавно добавленные приложения
  119. New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced -Name Start_TrackProgs -Value 0 -Force
  120. # Отобразить "Этот компьютер" на рабочем столе
  121. New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons\NewStartPanel -Name "{20D04FE0-3AEA-1069-A2D8-08002B30309D}" -Value 0 -Force
  122. # Show more details in file transfer dialog
  123. # Развернуть диалог переноса файлов
  124. IF (-not (Test-Path -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\OperationStatusManager))
  125. {
  126. New-Item -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\OperationStatusManager -Force
  127. }
  128. New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\OperationStatusManager -Name EnthusiastMode -Value 1 -Force
  129. # Turn off AutoPlay for all media and devices
  130. # Отключить автозапуск с внешних носителей
  131. New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers -Name DisableAutoplay -Value 1 -Force
  132. # Turn off the "- Shortcut" name extension for new shortcuts
  133. # He дoбaвлять "- яpлык" для coздaвaeмыx яpлыкoв
  134. New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer -Name link -PropertyType Binary -Value ([byte[]](00, 00, 00, 00)) -Force
  135. # Turn off SmartScreen for apps and files
  136. # Отключить SmartScreen для приложений и файлов
  137. New-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer -Name SmartScreenEnabled -PropertyType String -Value Off -Force
  138. # Remove the "Previous Versions" tab from properties context menu
  139. # Отключить отображение вкладки "Предыдущие версии" в свойствах файлов и папок
  140. New-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer -Name NoPreviousVersionsPage -Value 1 -Force
  141. # Always show all icons in the notification area
  142. # Всегда отображать все значки в области уведомлений
  143. New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer -Name EnableAutoTray -Value 0 -Force
  144. # Set the Control Panel view by large icons
  145. # Установить крупные значки в панели управления
  146. IF (-not (Test-Path -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\ControlPanel))
  147. {
  148. New-Item -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\ControlPanel -Force
  149. }
  150. New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\ControlPanel -Name AllItemsIconView -Value 0 -Force
  151. New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\ControlPanel -Name StartupPage -Value 1 -Force
  152. # Remove 3D Objects folder in "This PC" and in the navigation pane
  153. # Скрыть папку "Объемные объекты" из "Этот компьютер" и на панели быстрого доступа
  154. IF (-not (Test-Path -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FolderDescriptions\{31C0DD25-9439-4F12-BF41-7FF4EDA38722}\PropertyBag"))
  155. {
  156. New-Item -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FolderDescriptions\{31C0DD25-9439-4F12-BF41-7FF4EDA38722}\PropertyBag" -Force
  157. }
  158. New-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FolderDescriptions\{31C0DD25-9439-4F12-BF41-7FF4EDA38722}\PropertyBag" -Name ThisPCPolicy -PropertyType String -Value Hide -Force
  159. # Make the "Open", "Print", "Edit" context menu items available, when more than 15 selected
  160. # Сделать доступными элементы контекстного меню "Открыть", "Изменить" и "Печать" при выделении более 15 элементов
  161. New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer -Name MultipleInvokePromptMinimum -Value 300 -Force
  162. # Hide "Frequent folders" in Quick access
  163. # Не показывать недавно используемые папки на панели быстрого доступа
  164. New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer -Name ShowFrequent -Value 0 -Force
  165. # Hide "Recent files" in Quick access
  166. # Не показывать недавно использовавшиеся файлы на панели быстрого доступа
  167. New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer -Name ShowRecent -Value 0 -Force
  168. # Turn off creation of an Edge shortcut on the desktop for each user profile
  169. # Отключить создание ярлыка Edge на рабочем столе для каждого профиля пользователя пользователя
  170. New-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer -Name DisableEdgeDesktopShortcutCreation -Value 1 -Force
  171. # Turn on tip, trick, and suggestions as you use Windows
  172. # Показывать советы, подсказки и рекомендации при использованию Windows
  173. New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager -Name SubscribedContent-338389Enabled -Value 1 -Force
  174. # Turn on Storage Sense to automatically free up space
  175. # Включить Память устройства для автоматического освобождения места
  176. New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\StorageSense\Parameters\StoragePolicy -Name 01 -Value 1 -Force
  177. # Run Storage Sense every month
  178. # Запускать контроль памяти каждый месяц
  179. New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\StorageSense\Parameters\StoragePolicy -Name 2048 -Value 30 -Force
  180. # Delete temporary files that apps aren't using
  181. # Удалять временные файлы, не используемые в приложениях
  182. New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\StorageSense\Parameters\StoragePolicy -Name 04 -Value 1 -Force
  183. # Delete files in recycle bin if they have been there for over 30 days
  184. # Удалять файлы, которые находятся в корзине более 30 дней
  185. New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\StorageSense\Parameters\StoragePolicy -Name 256 -Value 30 -Force
  186. # Never delete files in "Downloads" folder
  187. # Никогда не удалять файлы из папки "Загрузки"
  188. New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\StorageSense\Parameters\StoragePolicy -Name 512 -Value 0 -Force
  189. # Turn off app suggestions on Start menu
  190. # Не показывать рекомендации в меню "Пуск"
  191. New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager -Name SubscribedContent-338388Enabled -Value 0 -Force
  192. # Turn off suggested content in the Settings
  193. # Не показывать рекомендуемое содержание в приложении "Параметры"
  194. New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager -Name SubscribedContent-338393Enabled -Value 0 -Force
  195. New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager -Name SubscribedContent-353694Enabled -Value 0 -Force
  196. New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager -Name SubscribedContent-353696Enabled -Value 0 -Force
  197. # Turn off automatic installing suggested apps
  198. # Отключить автоматическую установку рекомендованных приложений
  199. New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager -Name SilentInstalledAppsEnabled -Value 0 -Force
  200. # Hide "Windows Ink Workspace" button in taskbar
  201. # Скрыть кнопку Windows Ink Workspace на панели задач
  202. New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\PenWorkspace -Name PenWorkspaceButtonDesiredVisibility -Value 0 -Force
  203. # Do not offer tailored experiences based on the diagnostic data setting
  204. # Не предлагать персонализированныее возможности, основанные на выбранном параметре диагностических данных
  205. New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Privacy -Name TailoredExperiencesWithDiagnosticDataEnabled -Value 0 -Force
  206. # Do not let apps on other devices open and message apps on this device, and vice versa
  207. # Не разрешать приложениям на других устройствах запускать приложения и отправлять сообщения на этом устройстве и наоборот
  208. New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\CDP -Name RomeSdkChannelUserAuthzPolicy -Value 0 -Force
  209. # Choose theme color for default Windows mode
  210. # Выбрать режим Windows по умолчанию
  211. IF ($RU)
  212. {
  213. Write-Host "`nВыберите режим Windows по умолчанию, введя букву: "
  214. Write-Host "[L]ight " -ForegroundColor Yellow -NoNewline
  215. Write-Host "для светлого режима или " -NoNewline
  216. Write-Host "[D]ark " -ForegroundColor Yellow -NoNewline
  217. Write-Host "для тёмного."
  218. Write-Host "`nЧтобы пропустить, нажмите Enter" -NoNewline
  219. }
  220. else
  221. {
  222. Write-Host "`nChoose theme color for default Windows mode by typing"
  223. Write-Host "[L]ight " -ForegroundColor Yellow -NoNewline
  224. Write-Host "for the light mode or " -NoNewline
  225. Write-Host "[D]ark " -ForegroundColor Yellow -NoNewline
  226. Write-Host "for the dark"
  227. Write-Host "`nPress Enter to skip" -NoNewline
  228. }
  229. Do
  230. {
  231. $theme = Read-Host -Prompt " "
  232. IF ($theme -eq "L")
  233. {
  234. # Show color only on taskbar
  235. # Отображать цвет элементов только на панели задач
  236. New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Themes\Personalize -Name ColorPrevalence -Value 0 -Force
  237. # Light Theme Color for Default Windows Mode
  238. # Режим Windows по умолчанию светлый
  239. New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Themes\Personalize -Name SystemUsesLightTheme -Value 1 -Force
  240. }
  241. elseif ($theme -eq "D")
  242. {
  243. # Turn on the display of color on Start menu, taskbar, and action center
  244. # Отображать цвет элементов в меню "Пуск", на панели задач и в центре уведомлений
  245. New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Themes\Personalize -Name ColorPrevalence -Value 1 -Force
  246. # Dark Theme Color for Default Windows Mode
  247. # Режим Windows по умолчанию темный
  248. New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Themes\Personalize -Name SystemUsesLightTheme -Value 0 -Force
  249. }
  250. elseif ([string]::IsNullOrEmpty($theme))
  251. {
  252. break
  253. }
  254. else
  255. {
  256. IF ($RU)
  257. {
  258. Write-Host "`nНеправильная буква." -ForegroundColor Yellow
  259. Write-Host "Введите правильную букву: " -NoNewline
  260. Write-Host "[L]ight " -ForegroundColor Yellow -NoNewline
  261. Write-Host "для светлого режима или " -NoNewline
  262. Write-Host "[D]ark " -ForegroundColor Yellow -NoNewline
  263. Write-Host "для тёмного."
  264. Write-Host "`nЧтобы пропустить, нажмите Enter" -NoNewline
  265. }
  266. else
  267. {
  268. Write-Host "`nInvalid letter." -ForegroundColor Yellow
  269. Write-Host "Type the correct letter: " -NoNewline
  270. Write-Host "[L]ight " -ForegroundColor Yellow -NoNewline
  271. Write-Host "for the light mode or " -NoNewline
  272. Write-Host "[D]ark " -ForegroundColor Yellow -NoNewline
  273. Write-Host "for the dark."
  274. Write-Host "`nPress Enter to skip" -NoNewline
  275. }
  276. }
  277. }
  278. Until ($theme -eq "L" -or $theme -eq "D")
  279. # Choose theme color for default app mode
  280. # Выбрать режим приложения по умолчанию
  281. IF ($RU)
  282. {
  283. Write-Host "`nВыберите режим приложения по умолчанию, введя букву: "
  284. Write-Host "[L]ight " -ForegroundColor Yellow -NoNewline
  285. Write-Host "для светлого режима или " -NoNewline
  286. Write-Host "[D]ark " -ForegroundColor Yellow -NoNewline
  287. Write-Host "для тёмного."
  288. Write-Host "`nЧтобы пропустить, нажмите Enter" -NoNewline
  289. }
  290. else
  291. {
  292. Write-Host "`nChoose theme color for default app mode by typing"
  293. Write-Host "[L]ight " -ForegroundColor Yellow -NoNewline
  294. Write-Host "for the light mode or " -NoNewline
  295. Write-Host "[D]ark " -ForegroundColor Yellow -NoNewline
  296. Write-Host "for the dark"
  297. Write-Host "`nPress Enter to skip" -NoNewline
  298. }
  299. Do
  300. {
  301. $theme = Read-Host -Prompt " "
  302. IF ($theme -eq "L")
  303. {
  304. # Light theme color for default app mode
  305. # Режим приложений по умолчанию светлый
  306. New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Themes\Personalize -Name AppsUseLightTheme -Value 1 -Force
  307. }
  308. IF ($theme -eq "D")
  309. {
  310. # Dark theme color for default app mode
  311. # Режим приложений по умолчанию темный
  312. New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Themes\Personalize -Name AppsUseLightTheme -Value 0 -Force
  313. }
  314. elseif ([string]::IsNullOrEmpty($theme))
  315. {
  316. break
  317. }
  318. else
  319. {
  320. IF ($RU)
  321. {
  322. Write-Host "`nНеправильная буква." -ForegroundColor Yellow
  323. Write-Host "Введите правильную букву: " -NoNewline
  324. Write-Host "[L]ight " -ForegroundColor Yellow -NoNewline
  325. Write-Host "для светлого режима или " -NoNewline
  326. Write-Host "[D]ark " -ForegroundColor Yellow -NoNewline
  327. Write-Host "для тёмного."
  328. Write-Host "`nЧтобы пропустить, нажмите Enter" -NoNewline
  329. }
  330. else
  331. {
  332. Write-Host "`nInvalid letter." -ForegroundColor Yellow
  333. Write-Host "Type the correct letter: " -NoNewline
  334. Write-Host "[L]ight " -ForegroundColor Yellow -NoNewline
  335. Write-Host "for the light mode or " -NoNewline
  336. Write-Host "[D]ark " -ForegroundColor Yellow -NoNewline
  337. Write-Host "for the dark."
  338. Write-Host "`nPress Enter to skip" -NoNewline
  339. }
  340. }
  341. }
  342. Until ($theme -eq "L" -or $theme -eq "D")
  343. # Turn off location for this device
  344. # Отключить местоположение для этого устройства
  345. New-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\CapabilityAccessManager\ConsentStore\location -Name Value -PropertyType String -Value Deny -Force
  346. # Turn off thumbnail cache removal
  347. # Отключить удаление кэша миниатюр
  348. New-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches\Thumbnail Cache" -Name Autorun -Value 0 -Force
  349. New-ItemProperty -Path "HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches\Thumbnail Cache" -Name Autorun -Value 0 -Force
  350. # Turn off hibernate
  351. # Отключить гибридный спящий режим
  352. New-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control\Power -Name HibernateEnabled -Value 0 -Force
  353. # Change environment variable for $env:TEMP to $env:SystemDrive\Temp
  354. # Изменить путь переменной среды для временных файлов на $env:SystemDrive\Temp
  355. IF (-not (Test-Path -Path $env:SystemDrive\Temp))
  356. {
  357. New-Item -Path $env:SystemDrive\Temp -ItemType Directory -Force
  358. }
  359. [Environment]::SetEnvironmentVariable("TMP", "$env:SystemDrive\Temp", "User")
  360. New-ItemProperty -Path HKCU:\Environment -Name TMP -PropertyType ExpandString -Value %SystemDrive%\Temp -Force
  361. [Environment]::SetEnvironmentVariable("TEMP", "$env:SystemDrive\Temp", "User")
  362. New-ItemProperty -Path HKCU:\Environment -Name TEMP -PropertyType ExpandString -Value %SystemDrive%\Temp -Force
  363. [Environment]::SetEnvironmentVariable("TMP", "$env:SystemDrive\Temp", "Machine")
  364. New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" -Name TMP -PropertyType ExpandString -Value %SystemDrive%\Temp -Force
  365. [Environment]::SetEnvironmentVariable("TEMP", "$env:SystemDrive\Temp", "Machine")
  366. New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" -Name TEMP -PropertyType ExpandString -Value %SystemDrive%\Temp -Force
  367. [Environment]::SetEnvironmentVariable("TMP", "$env:SystemDrive\Temp", "Process")
  368. [Environment]::SetEnvironmentVariable("TEMP", "$env:SystemDrive\Temp", "Process")
  369. # Turn on Win32 long paths
  370. # Включить длинные пути Win32
  371. New-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem -Name LongPathsEnabled -Value 1 -Force
  372. # Group svchost.exe processes
  373. # Группировать одинаковые службы в один процесс svhost.exe
  374. $ram = (Get-CimInstance -ClassName Win32_PhysicalMemory | Measure-Object -Property Capacity -Sum).Sum / 1kb
  375. New-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control -Name SvcHostSplitThresholdInKB -Value $ram -Force
  376. # Turn on Retpoline patch against Spectre v2
  377. # Включить патч Retpoline против Spectre v2
  378. New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" -Name FeatureSettingsOverride -Value 1024 -Force
  379. New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" -Name FeatureSettingsOverrideMask -Value 1024 -Force
  380. # Turn on the display of stop error information on the BSoD
  381. # Включить дополнительную информацию при выводе BSoD
  382. New-ItemProperty -Path HKLM:\System\CurrentControlSet\Control\CrashControl -Name DisplayParameters -Value 1 -Force
  383. # Hide search box or search icon on taskbar
  384. # Не показывать кнопку поиска
  385. New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Search -Name SearchboxTaskbarMode -Value 0 -Force
  386. # Turn on recycle bin files delete confirmation
  387. # Запрашивать подтверждение на удалении файлов из корзины
  388. IF (-not (Test-Path -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer))
  389. {
  390. New-Item -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer -Force
  391. }
  392. New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer -Name ConfirmFileDelete -Value 1 -Force
  393. # Do not preserve zone information
  394. # Не хранить сведения о зоне происхождения вложенных файлов
  395. IF (-not (Test-Path -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Policies\Attachments))
  396. {
  397. New-Item -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Policies\Attachments -Force
  398. }
  399. New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Policies\Attachments -Name SaveZoneInformation -Value 1 -Force
  400. New-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Attachments -Name SaveZoneInformation -Value 1 -Force
  401. # Turn off Admin Approval Mode for administrators
  402. # Отключить использование режима одобрения администратором для встроенной учетной записи администратора
  403. New-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System -Name ConsentPromptBehaviorAdmin -Value 0 -Force
  404. # Turn off user first sign-in animation
  405. # Не показывать анимацию при первом входе в систему
  406. New-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System -Name EnableFirstLogonAnimation -Value 0 -Force
  407. # Turn on access to mapped drives from app running with elevated permissions with Admin Approval Mode enabled
  408. # Включить доступ к сетевым дискам при включенном режиме одобрения администратором при доступе из программ, запущенных с повышенными правами
  409. New-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System -Name EnableLinkedConnections -Value 1 -Force
  410. # Turn off "Look for an app in the Microsoft Store" in "Open with" dialog
  411. # Отключить поиск программ в Microsoft Store при открытии диалога "Открыть с помощью"
  412. IF (-not (Test-Path -Path HKLM:\SOFTWARE\Policies\Microsoft\Windows\Explorer))
  413. {
  414. New-Item -Path HKLM:\SOFTWARE\Policies\Microsoft\Windows\Explorer -Force
  415. }
  416. New-ItemProperty -Path HKLM:\SOFTWARE\Policies\Microsoft\Windows\Explorer -Name NoUseStoreOpenWith -Value 1 -Force
  417. # Turn on ribbon in File Explorer
  418. # Включить отображение ленты проводника в развернутом виде
  419. IF (-not (Test-Path -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Ribbon))
  420. {
  421. New-Item -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Ribbon -Force
  422. }
  423. New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Ribbon -Name MinimizedStateTabletModeOff -Value 0 -Force
  424. # Turn off "New App Installed" notification
  425. # Не показывать уведомление "Установлено новое приложение"
  426. New-ItemProperty -Path HKLM:\SOFTWARE\Policies\Microsoft\Windows\Explorer -Name NoNewAppAlert -Value 1 -Force
  427. # Turn off recently added apps on Start Menu
  428. # Не показывать недавно добавленные приложения в меню "Пуск"
  429. New-ItemProperty -Path HKLM:\SOFTWARE\Policies\Microsoft\Windows\Explorer -Name HideRecentlyAddedApps -Value 1 -Force
  430. # Turn off Windows Game Recording and Broadcasting
  431. # Отключить Запись и трансляции игр Windows
  432. IF (-not (Test-Path -Path HKLM:\SOFTWARE\Policies\Microsoft\Windows\GameDVR))
  433. {
  434. New-Item -Path HKLM:\SOFTWARE\Policies\Microsoft\Windows\GameDVR -Force
  435. }
  436. New-ItemProperty -Path HKLM:\SOFTWARE\Policies\Microsoft\Windows\GameDVR -Name AllowgameDVR -Value 0 -Force
  437. # Set download mode for delivery optization on "HTTP only"
  438. # Отключить оптимизацию доставки для обновлений с других ПК
  439. Get-Service -Name DoSvc | Stop-Service -Force
  440. IF (-not (Test-Path -Path HKLM:\SOFTWARE\Policies\Microsoft\Windows\DeliveryOptimization))
  441. {
  442. New-Item -Path HKLM:\SOFTWARE\Policies\Microsoft\Windows\DeliveryOptimization -Force
  443. }
  444. New-ItemProperty -Path HKLM:\SOFTWARE\Policies\Microsoft\Windows\DeliveryOptimization -Name DODownloadMode -Value 0 -Force
  445. # Always wait for the network at computer startup and logon
  446. # Всегда ждать сеть при запуске и входе в систему
  447. IF (-not (Test-Path -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\CurrentVersion\Winlogon"))
  448. {
  449. New-Item -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\CurrentVersion\Winlogon" -Force
  450. }
  451. New-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\CurrentVersion\Winlogon" -Name SyncForegroundPolicy -Value 1 -Force
  452. # Do not allow apps to use advertising ID
  453. # Не разрешать приложениям использовать идентификатор рекламы
  454. New-ItemProperty -Path HKLM:\Software\Microsoft\Windows\CurrentVersion\AdvertisingInfo -Name Enabled -Value 0 -Force
  455. # Turn off Cortana
  456. # Отключить Cortana
  457. IF (-not $RU)
  458. {
  459. IF (-not (Test-Path -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\Windows Search"))
  460. {
  461. New-Item -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\Windows Search" -Force
  462. }
  463. New-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\Windows Search" -Name AllowCortana -Value 0 -Force
  464. }
  465. # Turn off Windows Defender SmartScreen for Microsoft Edge
  466. # Отключить Windows Defender SmartScreen в Microsoft Edge
  467. $edge = (Get-AppxPackage "Microsoft.MicrosoftEdge").PackageFamilyName
  468. IF (-not (Test-Path -Path "HKCU:\Software\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\AppContainer\Storage\$edge\MicrosoftEdge\PhishingFilter"))
  469. {
  470. New-Item -Path "HKCU:\Software\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\AppContainer\Storage\$edge\MicrosoftEdge\PhishingFilter" -Force
  471. }
  472. New-ItemProperty -Path "HKCU:\Software\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\AppContainer\Storage\$edge\MicrosoftEdge\PhishingFilter" -Name EnabledV9 -Value 0 -Force
  473. New-ItemProperty -Path "HKCU:\Software\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\AppContainer\Storage\$edge\MicrosoftEdge\PhishingFilter" -Name PreventOverride -Value 0 -Force
  474. # Do not allow Microsoft Edge to start and load the Start and New Tab page at Windows startup and each time Microsoft Edge is closed
  475. # Не разрешать Edge запускать и загружать страницу при загрузке Windows и каждый раз при закрытии Edge
  476. IF (-not (Test-Path -Path HKLM:\SOFTWARE\Policies\Microsoft\MicrosoftEdge\TabPreloader))
  477. {
  478. New-Item -Path HKLM:\SOFTWARE\Policies\Microsoft\MicrosoftEdge\TabPreloader -Force
  479. }
  480. New-ItemProperty -Path HKLM:\SOFTWARE\Policies\Microsoft\MicrosoftEdge\TabPreloader -Name AllowTabPreloading -Value 0 -Force
  481. # Do not allow Microsoft Edge to pre-launch at Windows startup, when the system is idle, and each time Microsoft Edge is closed
  482. # Не разрешать предварительный запуск Edge при загрузке Windows, когда система простаивает, и каждый раз при закрытии Edge
  483. IF (-not (Test-Path -Path HKLM:\SOFTWARE\Policies\Microsoft\MicrosoftEdge\Main))
  484. {
  485. New-Item -Path HKLM:\SOFTWARE\Policies\Microsoft\MicrosoftEdge\Main -Force
  486. }
  487. New-ItemProperty -Path HKLM:\SOFTWARE\Policies\Microsoft\MicrosoftEdge\Main -Name AllowPrelaunch -Value 0 -Force
  488. # Do not allow Windows 10 to manage default printer
  489. # Отключить управление принтером, используемым по умолчанию, со стороны Windows 10
  490. New-ItemProperty -Path "HKCU:\Software\Microsoft\Windows NT\CurrentVersion\Windows" -Name LegacyDefaultPrinterMode -Value 1 -Force
  491. # Turn off JPEG desktop wallpaper import quality reduction
  492. # Установка качества фона рабочего стола на 100 %
  493. New-ItemProperty -Path "HKCU:\Control Panel\Desktop" -Name JPEGImportQuality -Value 100 -Force
  494. # Turn off sticky Shift key after pressing 5 times
  495. # Отключить залипание клавиши Shift после 5 нажатий
  496. New-ItemProperty -Path "HKCU:\Control Panel\Accessibility\StickyKeys" -Name Flags -PropertyType String -Value 506 -Force
  497. # Uninstall all UWP apps from all accounts except
  498. # Удалить все UWP-приложения из всех учетных записей, кроме
  499. $ExcludedApps = @(
  500. # iTunes
  501. "AppleInc.iTunes"
  502. # Intel UWP-panel
  503. # UWP-панель Intel
  504. "AppUp.IntelGraphicsControlPanel"
  505. "AppUp.IntelGraphicsExperience"
  506. # Microsoft Desktop App Installer
  507. "Microsoft.DesktopAppInstaller"
  508. # Extensions
  509. # Расширения
  510. "Microsoft.*Extension*"
  511. # Language pack
  512. # Языковой пакет
  513. "Microsoft.LanguageExperiencePack*"
  514. # Screen Sketch
  515. # Набросок на фрагменте экрана
  516. "Microsoft.ScreenSketch"
  517. # Photos
  518. # Фотографии
  519. "Microsoft.Windows.Photos"
  520. # Start
  521. # Меню "Пуск"
  522. "Microsoft.Windows.StartMenuExperienceHost"
  523. # NVIDIA Control Panel
  524. # Панель управления NVidia
  525. "NVIDIACorp.NVIDIAControlPanel"
  526. # Microsoft Store
  527. ".*Store.*"
  528. )
  529. $OFS = "|"
  530. Get-AppxPackage -PackageTypeFilter Bundle -AllUsers | Where-Object {$_.Name -cnotmatch $ExcludedApps} | Remove-AppxPackage -AllUsers
  531. $OFS = " "
  532. # Uninstall all UWP apps from all accounts except
  533. # Удалить все UWP-приложения из системной учетной записи, кроме
  534. $ExcludedApps = @(
  535. # Intel UWP-panel
  536. # UWP-панель Intel
  537. "AppUp.IntelGraphicsControlPanel"
  538. "AppUp.IntelGraphicsExperience"
  539. # Microsoft Desktop App Installer
  540. "Microsoft.DesktopAppInstaller"
  541. # Extensions
  542. # Расширения
  543. "Microsoft.*Extension*"
  544. # NVIDIA Control Panel
  545. # Панель управления NVidia
  546. "NVIDIACorp.NVIDIAControlPanel"
  547. # Microsoft Store
  548. ".*Store.*"
  549. )
  550. $OFS = "|"
  551. Get-AppxProvisionedPackage -Online | Where-Object -FilterScript {$_.DisplayName -cnotmatch $ExcludedApps} | Remove-AppxProvisionedPackage -Online
  552. $OFS = " "
  553. # Turn off Windows features
  554. # Отключить компоненты
  555. $features = @(
  556. # Windows Fax and Scan
  557. # Факсы и сканирование
  558. "FaxServicesClientPackage",
  559. # Legacy Components
  560. # Компоненты прежних версий
  561. "LegacyComponents",
  562. # Media Features
  563. # Компоненты работы с мультимедиа
  564. "MediaPlayback",
  565. # PowerShell 2.0
  566. "MicrosoftWindowsPowerShellV2",
  567. "MicrosoftWindowsPowershellV2Root",
  568. # Microsoft XPS Document Writer
  569. # Средство записи XPS-документов (Microsoft)
  570. "Printing-XPSServices-Features",
  571. # Microsoft Print to PDF
  572. # Печать в PDF (Майкрософт)
  573. "Printing-PrintToPDFServices-Features",
  574. # Work Folders Client
  575. # Клиент рабочих папок
  576. "WorkFolders-Client"
  577. )
  578. foreach ($feature in $features)
  579. {
  580. Disable-WindowsOptionalFeature -Online -FeatureName $feature -NoRestart
  581. }
  582. # Uninstall Onedrive
  583. # Удалить OneDrive
  584. Stop-Process -Name OneDrive -Force -ErrorAction SilentlyContinue
  585. Start-Process -FilePath "$env:SystemRoot\SysWOW64\OneDriveSetup.exe" -ArgumentList "/uninstall" -Wait
  586. Stop-Process -Name explorer
  587. IF (-not (Test-Path -Path HKLM:\SOFTWARE\Policies\Microsoft\Windows\OneDrive))
  588. {
  589. New-Item -Path HKLM:\SOFTWARE\Policies\Microsoft\Windows\OneDrive -Force
  590. }
  591. New-ItemProperty -Path HKLM:\SOFTWARE\Policies\Microsoft\Windows\OneDrive -Name DisableFileSyncNGSC -Value 1 -Force
  592. New-ItemProperty -Path HKLM:\SOFTWARE\Policies\Microsoft\Windows\OneDrive -Name DisableFileSync -Value 1 -Force
  593. New-ItemProperty -Path HKLM:\SOFTWARE\Policies\Microsoft\Windows\OneDrive -Name DisableMeteredNetworkFileSync -Value 0 -Force
  594. New-ItemProperty -Path HKLM:\SOFTWARE\Policies\Microsoft\Windows\OneDrive -Name DisableLibrariesDefaultSaveToOneDrive -Value 1 -Force
  595. New-ItemProperty -Path HKCU:\Software\Microsoft\OneDrive -Name DisablePersonalSync -Value 1 -Force
  596. Remove-ItemProperty -Path HKCU:\Environment -Name OneDrive -Force -ErrorAction SilentlyContinue
  597. Remove-Item -Path $env:USERPROFILE\OneDrive -Recurse -Force -ErrorAction SilentlyContinue
  598. Remove-Item -Path $env:LOCALAPPDATA\Microsoft\OneDrive -Recurse -Force -ErrorAction SilentlyContinue
  599. Remove-Item -Path "$env:ProgramData\Microsoft OneDrive" -Recurse -Force -ErrorAction SilentlyContinue
  600. Unregister-ScheduledTask -TaskName *OneDrive* -Confirm:$false
  601. # Turn on updates for other Microsoft products
  602. # Включить автоматическое обновление для других продуктов Microsoft
  603. (New-Object -ComObject Microsoft.Update.ServiceManager).AddService2("7971f918-a847-4430-9279-4a52d1efe18d", 7, "")
  604. # Turn off Game Bar
  605. # Отключить игровую панель
  606. New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\GameDVR -Name AppCaptureEnabled -Value 0 -Force
  607. New-ItemProperty -Path HKCU:\System\GameConfigStore -Name GameDVR_Enabled -Value 0 -Force
  608. # Turn off Game Mode
  609. # Отключить игровой режим
  610. New-ItemProperty -Path HKCU:\Software\Microsoft\GameBar -Name AllowAutoGameMode -Value 0 -Force
  611. # Turn off Game Bar tips
  612. # Отключить подсказки игровой панели
  613. New-ItemProperty -Path HKCU:\Software\Microsoft\GameBar -Name ShowStartupPanel -Value 0 -Force
  614. # Enable System Restore
  615. # Включить восстановление системы
  616. Enable-ComputerRestore -Drive $env:SystemDrive
  617. Get-ScheduledTask -TaskName SR | Enable-ScheduledTask
  618. Get-Service -Name swprv, vss | Set-Service -StartupType Manual
  619. Get-Service -Name swprv, vss | Start-Service
  620. Get-CimInstance -ClassName Win32_ShadowCopy | Remove-CimInstance
  621. # Turn off Windows Script Host
  622. # Отключить Windows Script Host
  623. New-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows Script Host\Settings" -Name Enabled -Value 0 -Force
  624. # Create scheduled task with the disk cleanup tool in Task Scheduler. The task runs every 90 days
  625. # Создать в Планировщике задач задачу по запуску очистки диска. Задача выполняется каждые 90 дней
  626. $keys = @(
  627. # Delivery Optimization Files
  628. # Файлы оптимизации доставки
  629. "Delivery Optimization Files",
  630. # Device driver packages
  631. # Пакеты драйверов устройств
  632. "Device Driver Packages",
  633. # Previous Windows Installation(s)
  634. # Предыдущие установки Windows
  635. "Previous Installations",
  636. # Файлы журнала установки
  637. "Setup Log Files",
  638. # Temporary Setup Files
  639. "Temporary Setup Files",
  640. # Windows Update Cleanup
  641. # Очистка обновлений Windows
  642. "Update Cleanup",
  643. # Windows Defender Antivirus
  644. "Windows Defender",
  645. # Windows upgrade log files
  646. # Файлы журнала обновления Windows
  647. "Windows Upgrade Log Files")
  648. foreach ($key in $keys)
  649. {
  650. New-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches\$key" -Name StateFlags1337 -Value 2 -Force
  651. }
  652. $action = New-ScheduledTaskAction -Execute "cleanmgr.exe" -Argument "/sagerun:1337"
  653. $trigger = New-ScheduledTaskTrigger -Daily -DaysInterval 90 -At 9am
  654. $settings = New-ScheduledTaskSettingsSet -Compatibility Win8 -StartWhenAvailable
  655. $principal = New-ScheduledTaskPrincipal -UserId $env:USERNAME -RunLevel Highest
  656. $params = @{
  657. "TaskName" = "Update Cleanup"
  658. "Action" = $action
  659. "Trigger" = $trigger
  660. "Settings" = $settings
  661. "Principal" = $principal
  662. }
  663. Register-ScheduledTask @params -Force
  664. # Create task to clean out the "$env:SystemRoot\SoftwareDistribution\Download" folder in Task Scheduler.. The task runs on Thursdays every 4 weeks.
  665. # Создать в Планировщике задач задачу по очистке папки "$env:SystemRoot\SoftwareDistribution\Download". Задача выполняется по четвергам каждую 4 неделю.
  666. $action = New-ScheduledTaskAction -Execute powershell.exe -Argument @"
  667. `$getservice = Get-Service -Name wuauserv
  668. `$getservice.WaitForStatus("Stopped", "01:00:00")
  669. Get-ChildItem -Path `$env:SystemRoot\SoftwareDistribution\Download -Recurse -Force | Remove-Item -Recurse -Force
  670. "@
  671. $trigger = New-JobTrigger -Weekly -WeeksInterval 4 -DaysOfWeek Thursday -At 9am
  672. $settings = New-ScheduledTaskSettingsSet -Compatibility Win8 -StartWhenAvailable
  673. $principal = New-ScheduledTaskPrincipal -UserId System -RunLevel Highest
  674. $params = @{
  675. "TaskName" = "SoftwareDistribution"
  676. "Action" = $action
  677. "Trigger" = $trigger
  678. "Settings" = $settings
  679. "Principal" = $principal
  680. }
  681. Register-ScheduledTask @params -Force
  682. # Create scheduled task with the $env:TEMP folder cleanup in Task Scheduler. The task runs every 62 days
  683. # Создать в Планировщике задач очистки папки $env:TEMP. Задача выполняется каждые 62 дня
  684. $action = New-ScheduledTaskAction -Execute powershell.exe -Argument @"
  685. Get-ChildItem -Path `$env:TEMP -Force -Recurse | Remove-Item -Force -Recurse
  686. "@
  687. $trigger = New-ScheduledTaskTrigger -Daily -DaysInterval 62 -At 9am
  688. $settings = New-ScheduledTaskSettingsSet -Compatibility Win8 -StartWhenAvailable
  689. $principal = New-ScheduledTaskPrincipal -UserId System -RunLevel Highest
  690. $params = @{
  691. "TaskName" = "Temp"
  692. "Action" = $action
  693. "Trigger" = $trigger
  694. "Settings" = $settings
  695. "Principal" = $principal
  696. }
  697. Register-ScheduledTask @params -Force
  698. # Turn off default background apps except
  699. # Запретить стандартным приложениям работать в фоновом режиме, кроме
  700. $apps = @(
  701. # Content Delivery Manager
  702. "Microsoft.Windows.ContentDeliveryManager*"
  703. # Cortana
  704. "Microsoft.Windows.Cortana*"
  705. # Windows Security
  706. # Безопасность Windows
  707. "Microsoft.Windows.SecHealthUI*"
  708. # ShellExperienceHost
  709. "Microsoft.Windows.ShellExperienceHost*"
  710. # StartMenuExperienceHost
  711. "Microsoft.Windows.StartMenuExperienceHost*")
  712. foreach ($app in $apps)
  713. {
  714. Get-ChildItem -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\BackgroundAccessApplications -Exclude $apps |
  715. ForEach-Object -Process {
  716. New-ItemProperty -Path $_.PsPath -Name Disabled -Value 1 -Force
  717. New-ItemProperty -Path $_.PsPath -Name DisabledByUser -Value 1 -Force
  718. }
  719. }
  720. # Set power management scheme for desktop and laptop
  721. # Установить схему управления питания для стационарного ПК и ноутбука
  722. IF ((Get-CimInstance -ClassName Win32_ComputerSystem).PCSystemType -eq 1)
  723. {
  724. # High performance for desktop
  725. # Высокая производительность для стационарного ПК
  726. powercfg /setactive SCHEME_MIN
  727. }
  728. IF ((Get-CimInstance -ClassName Win32_ComputerSystem).PCSystemType -eq 2)
  729. {
  730. # Balanced for laptop
  731. # Сбалансированная для ноутбука
  732. powercfg /setactive SCHEME_BALANCED
  733. }
  734. # Turn on .NET 4 runtime for all apps
  735. # Использовать последнюю установленную версию .NET Framework для всех приложений
  736. New-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\.NETFramework -Name OnlyUseLatestCLR -Value 1 -Force
  737. New-ItemProperty -Path HKLM:\SOFTWARE\Wow6432Node\Microsoft\.NETFramework -Name OnlyUseLatestCLR -Value 1 -Force
  738. # Turn on Num Lock at startup
  739. # Включить Num Lock при загрузке
  740. New-ItemProperty -Path "Registry::HKEY_USERS\.DEFAULT\Control Panel\Keyboard" -Name InitialKeyboardIndicators -PropertyType String -Value 2147483650 -Force
  741. # Add folder to exclude from Windows Defender Antivirus scan
  742. # Добавить папку в список исключений сканирования Защитника Windows
  743. IF ($RU)
  744. {
  745. Write-Host "`nВведите полные пути до файлов или папок, которые следует "
  746. Write-Host "исключить из списка сканирования Windows Defender."
  747. Write-Host "Пути должны быть разделены запятыми и взяты в кавычки." -ForegroundColor Yellow
  748. Write-Host "`nЧтобы пропустить, нажмите Enter" -NoNewline
  749. }
  750. else
  751. {
  752. Write-Host "`nType the full paths to files or folders, which to exclude "
  753. Write-Host "from Windows Defender Antivirus Scan."
  754. Write-Host "The paths must be separated by commas and taken in quotes." -ForegroundColor Yellow
  755. Write-Host "`nPress Enter to skip" -NoNewline
  756. }
  757. function ExclusionPath
  758. {
  759. [CmdletBinding()]
  760. Param
  761. (
  762. [Parameter(Mandatory = $True)]
  763. [string[]]$paths
  764. )
  765. $paths = $paths.Replace("`"", "").Split(",").Trim()
  766. Add-MpPreference -ExclusionPath $paths -Force
  767. }
  768. Do
  769. {
  770. $paths = Read-Host -Prompt " "
  771. IF ($paths -match "`"")
  772. {
  773. ExclusionPath $paths
  774. }
  775. elseif ([string]::IsNullOrEmpty($paths))
  776. {
  777. break
  778. }
  779. else
  780. {
  781. IF ($RU)
  782. {
  783. Write-Host "`nПути не взяты в кавычки." -ForegroundColor Yellow
  784. Write-Host "Введите пути, взяв в кавычки и разделив запятыми."
  785. Write-Host "`nЧтобы пропустить, нажмите Enter" -NoNewline
  786. }
  787. else
  788. {
  789. Write-Host "`nThe paths hasn't been taken in quotes." -ForegroundColor Yellow
  790. Write-Host "Type the paths by quoting and separating by commas."
  791. Write-Host "`nPress Enter to skip" -NoNewline
  792. }
  793. }
  794. }
  795. Until ($paths -match "`"")
  796. function Get-ResolvedPath
  797. {
  798. param (
  799. [Parameter(ValueFromPipeline = 1)]
  800. $Path
  801. )
  802. (Get-Disk | Where-Object -FilterScript {$_.IsBoot -eq $false} | Get-Partition | Get-Volume | Where-Object -FilterScript {$null -ne $_.DriveLetter}).DriveLetter | ForEach-Object -Process {Join-Path ($_ + ":") $Path -Resolve -ErrorAction SilentlyContinue}
  803. }
  804. $folder = "Программы\Прочее" | Get-ResolvedPath
  805. IF ($folder)
  806. {
  807. Add-MpPreference -ExclusionPath $folder -Force
  808. }
  809. # Turn on Windows Defender Exploit Guard Network Protection
  810. # Включить Защиту сети в Защитнике Windows
  811. Set-MpPreference -EnableNetworkProtection Enabled
  812. # Turn on Controlled folder access and add protected folders
  813. # Включить контролируемый доступ к папкам и добавить защищенные папки
  814. IF ($RU)
  815. {
  816. Write-Host "`nВведите путь до папки, чтобы добавить в список защищенных папок."
  817. Write-Host "Пути должны быть разделены запятыми и взяты в кавычки." -ForegroundColor Yellow
  818. Write-Host "`nЧтобы пропустить, нажмите Enter" -NoNewline
  819. }
  820. else
  821. {
  822. Write-Host "`nType folder path to add to protected folders list."
  823. Write-Host "The paths must be separated by commas and taken in quotes." -ForegroundColor Yellow
  824. Write-Host "`nPress Enter to skip" -NoNewline
  825. }
  826. function ControlledFolder
  827. {
  828. [CmdletBinding()]
  829. Param
  830. (
  831. [Parameter(Mandatory = $True)]
  832. [string[]]$paths
  833. )
  834. Set-MpPreference -EnableControlledFolderAccess Enabled
  835. $paths = $paths.Replace("`"", "").Split(",").Trim()
  836. Add-MpPreference -ControlledFolderAccessProtectedFolders $paths
  837. }
  838. Do
  839. {
  840. $paths = Read-Host -Prompt " "
  841. IF ($paths -match "`"")
  842. {
  843. ControlledFolder $paths
  844. }
  845. elseif ([string]::IsNullOrEmpty($paths))
  846. {
  847. break
  848. }
  849. else
  850. {
  851. IF ($RU)
  852. {
  853. Write-Host "`nПути не взяты в кавычки." -ForegroundColor Yellow
  854. Write-Host "Введите пути, взяв в кавычки и разделив запятыми."
  855. Write-Host "`nЧтобы пропустить, нажмите Enter" -NoNewline
  856. }
  857. else
  858. {
  859. Write-Host "`nThe paths hasn't been taken in quotes." -ForegroundColor Yellow
  860. Write-Host "Type the paths by quoting and separating by commas."
  861. Write-Host "`nPress Enter to skip" -NoNewline
  862. }
  863. }
  864. }
  865. Until ($paths -match "`"")
  866. # Turn on Windows Defender PUA Protection
  867. # Включить блокировки потенциально нежелательных приложений
  868. Set-MpPreference -PUAProtection Enabled
  869. # Turn on firewall & network protection
  870. # Включить брандмауэр
  871. Set-NetFirewallProfile -Enabled True
  872. # Turn off F1 Help key
  873. # Отключить справку по нажатию F1
  874. IF (-not (Test-Path -Path "HKCU:\Software\Classes\Typelib\{8cec5860-07a1-11d9-b15e-000d56bfe6ee}\1.0\0\win64"))
  875. {
  876. New-Item -Path "HKCU:\Software\Classes\Typelib\{8cec5860-07a1-11d9-b15e-000d56bfe6ee}\1.0\0\win64" -Force
  877. }
  878. New-ItemProperty -Path "HKCU:\Software\Classes\Typelib\{8cec5860-07a1-11d9-b15e-000d56bfe6ee}\1.0\0\win64" -Name "(default)" -PropertyType String -Value "" -Force
  879. # Show Task Manager details
  880. # Раскрыть окно Диспетчера задач
  881. $taskmgr = Get-Process -Name Taskmgr -ErrorAction SilentlyContinue
  882. IF ($taskmgr)
  883. {
  884. $taskmgr.CloseMainWindow()
  885. }
  886. $taskmgr = Start-Process -FilePath taskmgr.exe -WindowStyle Hidden -PassThru
  887. Do
  888. {
  889. Start-Sleep -Milliseconds 100
  890. $preferences = Get-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\TaskManager -Name Preferences -ErrorAction SilentlyContinue
  891. }
  892. Until ($preferences)
  893. Stop-Process -Name $taskmgr
  894. $preferences.Preferences[28] = 0
  895. New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\TaskManager -Name Preferences -PropertyType Binary -Value $preferences.Preferences -Force
  896. # Do not allow the computer to turn off the device to save power for desktop
  897. # Запретить отключение Ethernet-адаптера для экономии энергии для стационарного ПК
  898. IF ((Get-CimInstance -ClassName Win32_ComputerSystem).PCSystemType -eq 1)
  899. {
  900. $adapter = Get-NetAdapter -Physical | Get-NetAdapterPowerManagement
  901. $adapter.AllowComputerToTurnOffDevice = "Disabled"
  902. $adapter | Set-NetAdapterPowerManagement
  903. }
  904. # Add "Extract" to MSI file type context menu
  905. # Добавить пункт "Extract" для MSI в контекстное меню
  906. IF (-not (Test-Path -Path Registry::HKEY_CLASSES_ROOT\Msi.Package\shell\Extract\Command))
  907. {
  908. New-Item -Path Registry::HKEY_CLASSES_ROOT\Msi.Package\shell\Extract\Command -Force
  909. }
  910. New-ItemProperty -Path Registry::HKEY_CLASSES_ROOT\Msi.Package\shell\Extract\Command -Name "(default)" -PropertyType String -Value "msiexec.exe /a `"%1`" /qb TARGETDIR=`"%1 extracted`"" -Force
  911. New-ItemProperty -Path Registry::HKEY_CLASSES_ROOT\Msi.Package\shell\Extract -Name MUIVerb -PropertyType String -Value "@shell32.dll,-31382" -Force
  912. New-ItemProperty -Path Registry::HKEY_CLASSES_ROOT\Msi.Package\shell\Extract -Name Icon -PropertyType String -Value "shell32.dll,-16817" -Force
  913. # Add "Run as different user" from context menu for .exe file type
  914. # Добавить "Запуск от имени друго пользователя" в контекстное меню для .exe файлов
  915. New-ItemProperty -Path Registry::HKEY_CLASSES_ROOT\exefile\shell\runasuser -Name "(default)" -PropertyType String -Value "@shell32.dll,-50944" -Force
  916. Remove-ItemProperty -Path Registry::HKEY_CLASSES_ROOT\exefile\shell\runasuser -Name Extended -Force -ErrorAction SilentlyContinue
  917. New-ItemProperty -Path Registry::HKEY_CLASSES_ROOT\exefile\shell\runasuser -Name SuppressionPolicyEx -PropertyType String -Value "{F211AA05-D4DF-4370-A2A0-9F19C09756A7}" -Force
  918. New-ItemProperty -Path Registry::HKEY_CLASSES_ROOT\exefile\shell\runasuser\command -Name DelegateExecute -PropertyType String -Value "{ea72d00e-4960-42fa-ba92-7792a7944c1d}" -Force
  919. # Add "Install" to CAB file type context menu
  920. # Добавить пункт "Установить" для CAB-файлов в контекстном меню
  921. IF (-not (Test-Path -Path Registry::HKEY_CLASSES_ROOT\CABFolder\Shell\RunAs\Command))
  922. {
  923. New-Item -Path Registry::HKEY_CLASSES_ROOT\CABFolder\Shell\RunAs\Command -Force
  924. }
  925. New-ItemProperty -Path Registry::HKEY_CLASSES_ROOT\CABFolder\Shell\RunAs\Command -Name "(default)" -PropertyType String -Value "cmd /c DISM /Online /Add-Package /PackagePath:`"%1`" /NoRestart & pause" -Force
  926. New-ItemProperty -Path Registry::HKEY_CLASSES_ROOT\CABFolder\Shell\RunAs -Name MUIVerb -PropertyType String -Value "@shell32.dll,-10210" -Force
  927. New-ItemProperty -Path Registry::HKEY_CLASSES_ROOT\CABFolder\Shell\RunAs -Name HasLUAShield -PropertyType String -Value "" -Force
  928. # Remove "Cast to Device" from context menu
  929. # Удалить пункт "Передать на устройство" из контекстного меню
  930. IF (-not (Test-Path -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions\Blocked"))
  931. {
  932. New-Item -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions\Blocked" -Force
  933. }
  934. New-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions\Blocked" -Name "{7AD84985-87B4-4a16-BE58-8B72A5B390F7}" -PropertyType String -Value "Play to menu" -Force
  935. # Remove "Share" from context menu
  936. # Удалить пункт "Отправить" (поделиться) из контекстного меню
  937. IF (-not (Test-Path -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions\Blocked"))
  938. {
  939. New-Item -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions\Blocked" -Force
  940. }
  941. New-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions\Blocked" -Name "{E2BF9676-5F8F-435C-97EB-11607A5BEDF7}" -PropertyType String -Value "" -Force
  942. # Remove "Previous Versions" from file context menu
  943. # Удалить пункт "Восстановить прежнюю версию" из контекстного меню
  944. IF (-not (Test-Path -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions\Blocked"))
  945. {
  946. New-Item -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions\Blocked" -Force
  947. }
  948. New-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions\Blocked" -Name "{596AB062-B4D2-4215-9F74-E9109B0A8153}" -PropertyType String -Value "" -Force
  949. # Remove "Edit with Paint 3D" from context menu
  950. # Удалить пункт "Изменить с помощью Paint 3D" из контекстного меню
  951. $exts = @(".bmp", ".gif", ".jpe", ".jpeg", ".jpg", ".png", ".tif", ".tiff")
  952. foreach ($ext in $exts)
  953. {
  954. New-ItemProperty -Path "Registry::HKEY_CLASSES_ROOT\SystemFileAssociations\$ext\Shell\3D Edit" -Name ProgrammaticAccessOnly -PropertyType String -Value "" -Force
  955. }
  956. # Remove "Include in Library" from context menu
  957. # Удалить пункт "Добавить в библиотеку" из контекстного меню
  958. New-ItemProperty -Path "Registry::HKEY_CLASSES_ROOT\Folder\shellex\ContextMenuHandlers\Library Location" -Name "(default)" -PropertyType String -Value "-{3dad6c5d-2167-4cae-9914-f99e41c12cfa}" -Force
  959. # Remove "Turn on BitLocker" from context menu
  960. # Удалить пункт "Включить Bitlocker" из контекстного меню
  961. IF (Get-WindowsEdition -Online | Where-Object -FilterScript {$_.Edition -eq "Professional" -or $_.Edition -eq "Enterprise"})
  962. {
  963. New-ItemProperty -Path Registry::HKEY_CLASSES_ROOT\Drive\shell\encrypt-bde -Name ProgrammaticAccessOnly -PropertyType String -Value "" -Force
  964. New-ItemProperty -Path Registry::HKEY_CLASSES_ROOT\Drive\shell\encrypt-bde-elev -Name ProgrammaticAccessOnly -PropertyType String -Value "" -Force
  965. New-ItemProperty -Path Registry::HKEY_CLASSES_ROOT\Drive\shell\manage-bde -Name ProgrammaticAccessOnly -PropertyType String -Value "" -Force
  966. New-ItemProperty -Path Registry::HKEY_CLASSES_ROOT\Drive\shell\resume-bde -Name ProgrammaticAccessOnly -PropertyType String -Value "" -Force
  967. New-ItemProperty -Path Registry::HKEY_CLASSES_ROOT\Drive\shell\resume-bde-elev -Name ProgrammaticAccessOnly -PropertyType String -Value "" -Force
  968. New-ItemProperty -Path Registry::HKEY_CLASSES_ROOT\Drive\shell\unlock-bde -Name ProgrammaticAccessOnly -PropertyType String -Value "" -Force
  969. }
  970. # Remove "Edit with Photos" from context menu
  971. # Удалить пункт "Изменить с помощью приложения "Фотографии"" из контекстного меню
  972. New-ItemProperty -Path Registry::HKEY_CLASSES_ROOT\AppX43hnxtbyyps62jhe9sqpdzxn1790zetc\Shell\ShellEdit -Name ProgrammaticAccessOnly -PropertyType String -Value "" -Force
  973. # Remove "Create a new video" from Context Menu
  974. # Удалить пункт "Создать новое видео" из контекстного меню
  975. New-ItemProperty -Path Registry::HKEY_CLASSES_ROOT\AppX43hnxtbyyps62jhe9sqpdzxn1790zetc\Shell\ShellCreateVideo -Name ProgrammaticAccessOnly -PropertyType String -Value "" -Force
  976. # Remove "Edit" from Context Menu
  977. # Удалить пункт "Изменить" из контекстного меню
  978. New-ItemProperty -Path Registry::HKEY_CLASSES_ROOT\SystemFileAssociations\image\shell\edit -Name ProgrammaticAccessOnly -PropertyType String -Value "" -Force
  979. # Remove "Print" from batch and cmd files context menu
  980. # Удалить пункт "Печать" из контекстного меню для bat- и cmd-файлов
  981. New-ItemProperty -Path Registry::HKEY_CLASSES_ROOT\batfile\shell\print -Name ProgrammaticAccessOnly -PropertyType String -Value "" -Force
  982. New-ItemProperty -Path Registry::HKEY_CLASSES_ROOT\cmdfile\shell\print -Name ProgrammaticAccessOnly -PropertyType String -Value "" -Force
  983. # Remove "Compressed (zipped) Folder" from context menu
  984. # Удалить пункт "Сжатая ZIP-папка" из контекстного меню
  985. Remove-Item -Path Registry::HKEY_CLASSES_ROOT\.zip\CompressedFolder\ShellNew -Force -ErrorAction SilentlyContinue
  986. # Remove "Rich Text Document" from context menu
  987. # Удалить пункт "Создать Документ в формате RTF" из контекстного меню
  988. Remove-ItemProperty -Path Registry::HKEY_CLASSES_ROOT\.rtf\ShellNew -Name Data -Force -ErrorAction SilentlyContinue
  989. Remove-ItemProperty -Path Registry::HKEY_CLASSES_ROOT\.rtf\ShellNew -Name ItemName -Force -ErrorAction SilentlyContinue
  990. # Remove "Bitmap image" from context menu
  991. # Удалить пункт "Создать Точечный рисунок" из контекстного меню
  992. Remove-ItemProperty -Path Registry::HKEY_CLASSES_ROOT\.bmp\ShellNew -Name ItemName -Force -ErrorAction SilentlyContinue
  993. Remove-ItemProperty -Path Registry::HKEY_CLASSES_ROOT\.bmp\ShellNew -Name NullFile -Force -ErrorAction SilentlyContinue
  994. # Remove "Send to" from folder context menu
  995. # Удалить пункт "Отправить" из контекстного меню папки
  996. New-ItemProperty -Path Registry::HKEY_CLASSES_ROOT\AllFilesystemObjects\shellex\ContextMenuHandlers\SendTo -Name "(default)" -PropertyType String -Value "" -Force
  997. # Set the default input method to the English language
  998. # Установить метод ввода по умолчанию на английский язык
  999. Set-WinDefaultInputMethodOverride "0409:00000409"
  1000. # Unpin Microsoft Edge and Microsoft Store from taskbar
  1001. # Открепить Microsoft Edge и Microsoft Store от панели задач
  1002. $Signature = @{
  1003. Namespace = "WinAPI"
  1004. Name = "GetStr"
  1005. Language = "CSharp"
  1006. MemberDefinition = @"
  1007. [DllImport("kernel32.dll", CharSet = CharSet.Auto)]
  1008. public static extern IntPtr GetModuleHandle(string lpModuleName);
  1009. [DllImport("user32.dll", CharSet = CharSet.Auto)]
  1010. internal static extern int LoadString(IntPtr hInstance, uint uID, StringBuilder lpBuffer, int nBufferMax);
  1011. public static string GetString(uint strId)
  1012. {
  1013. IntPtr intPtr = GetModuleHandle("shell32.dll");
  1014. StringBuilder sb = new StringBuilder(255);
  1015. LoadString(intPtr, strId, sb, sb.Capacity);
  1016. return sb.ToString();
  1017. }
  1018. "@
  1019. }
  1020. IF (-not ("WinAPI.GetStr" -as [type]))
  1021. {
  1022. Add-Type @Signature -Using System.Text
  1023. }
  1024. $unpin = [WinAPI.GetStr]::GetString(5387)
  1025. $apps = (New-Object -ComObject Shell.Application).NameSpace("shell:::{4234d49b-0245-4df3-b780-3893943456e1}").Items()
  1026. $apps | Where-Object -FilterScript {$_.Path -like "Microsoft.MicrosoftEdge*"} | ForEach-Object -Process {$_.Verbs() | Where-Object -FilterScript {$_.Name -eq $unpin} | ForEach-Object -Process {$_.DoIt()}}
  1027. $apps | Where-Object -FilterScript {$_.Path -like "Microsoft.WindowsStore*"} | ForEach-Object -Process {$_.Verbs() | Where-Object -FilterScript {$_.Name -eq $unpin} | ForEach-Object -Process {$_.DoIt()}}
  1028. # Do not use sign-in info to automatically finish setting up device after an update or restart
  1029. # Не использовать данные для входа для автоматического завершения настройки устройства после перезапуска или обновления
  1030. $sid = (Get-CimInstance -ClassName Win32_UserAccount | Where-Object -FilterScript {$_.Name -eq "$env:USERNAME"}).SID
  1031. IF (-not (Test-Path -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\UserARSO\$sid"))
  1032. {
  1033. New-Item -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\UserARSO\$sid" -Force
  1034. }
  1035. New-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\UserARSO\$sid" -Name OptOut -Value 1 -Force
  1036. # Remove Microsoft Edge shortcut from the Desktop
  1037. # Удалить ярлык Microsoft Edge с рабочего стола
  1038. $value = Get-ItemPropertyValue -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name Desktop
  1039. Remove-Item -Path "$value\Microsoft Edge.lnk" -Force -ErrorAction SilentlyContinue
  1040. # Turn off per-user services
  1041. # Отключить пользовательские службы
  1042. $services = @(
  1043. # Contact Data
  1044. # Служба контактных данных
  1045. "PimIndexMaintenanceSvc_*",
  1046. # User Data Storage
  1047. # Служба хранения данных пользователя
  1048. "UnistoreSvc_*",
  1049. # User Data Access
  1050. # Служба доступа к данным пользователя
  1051. "UserDataSvc_*"
  1052. )
  1053. Get-Service -Name $services | Stop-Service -Force
  1054. New-ItemProperty -Path HKLM:\System\CurrentControlSet\Services\PimIndexMaintenanceSvc -Name Start -Value 4 -Force
  1055. New-ItemProperty -Path HKLM:\System\CurrentControlSet\Services\PimIndexMaintenanceSvc -Name UserServiceFlags -Value 0 -Force
  1056. New-ItemProperty -Path HKLM:\System\CurrentControlSet\Services\UnistoreSvc -Name Start -Value 4 -Force
  1057. New-ItemProperty -Path HKLM:\System\CurrentControlSet\Services\UnistoreSvc -Name UserServiceFlags -Value 0 -Force
  1058. New-ItemProperty -Path HKLM:\System\CurrentControlSet\Services\UserDataSvc -Name Start -Value 4 -Force
  1059. New-ItemProperty -Path HKLM:\System\CurrentControlSet\Services\UserDataSvc -Name UserServiceFlags -Value 0 -Force
  1060. # Let Windows try to fix apps so they're not blurry
  1061. # Разрешить Windows исправлять размытость в приложениях
  1062. New-ItemProperty -Path "HKCU:\Control Panel\Desktop" -Name EnablePerProcessSystemDPI -Value 1 -Force
  1063. # Remove printers
  1064. # Удалить принтеры
  1065. Remove-Printer -Name Fax, "Microsoft XPS Document Writer", "Microsoft Print to PDF" -ErrorAction SilentlyContinue
  1066. # Hide notification about sign in with Microsoft in the Windows Security
  1067. # Скрыть уведомление Защитника Windows об использовании аккаунта Microsoft
  1068. New-ItemProperty -Path "HKCU:\Software\Microsoft\Windows Security Health\State" -Name AccountProtection_MicrosoftAccount_Disconnected -Value 1 -Force
  1069. # Hide notification about disabled Smartscreen for Microsoft Edge
  1070. # Скрыть уведомление Защитника Windows об отключенном фильтре SmartScreen для Microsoft Edge
  1071. New-ItemProperty -Path "HKCU:\Software\Microsoft\Windows Security Health\State" -Name AppAndBrowser_EdgeSmartScreenOff -Value 0 -Force
  1072. # Remove Windows capabilities
  1073. # Удалить компоненты
  1074. $IncludedApps = @(
  1075. # Microsoft Quick Assist
  1076. # Быстрая поддержка (Майкрософт)
  1077. "App.Support.QuickAssist*"
  1078. # Windows Hello Face
  1079. # Распознавание лиц Windows Hello
  1080. "Hello.Face*"
  1081. # Windows Media Player
  1082. # Проигрыватель Windows Media
  1083. "Media.WindowsMediaPlayer*"
  1084. )
  1085. $OFS = "|"
  1086. Get-WindowsCapability -Online | Where-Object -FilterScript {$_.Name -cmatch $IncludedApps} | Remove-WindowsCapability -Online
  1087. $OFS = " "
  1088. # Open shortcut to the Command Prompt from Start menu as Administrator
  1089. # Запускать ярлык к командной строке в меню "Пуск" от имени Администратора
  1090. $bytes = [System.IO.File]::ReadAllBytes("$env:APPDATA\Microsoft\Windows\Start Menu\Programs\System Tools\Command Prompt.lnk")
  1091. $bytes[0x15] = $bytes[0x15] -bor 0x20
  1092. [System.IO.File]::WriteAllBytes("$env:APPDATA\Microsoft\Windows\Start Menu\Programs\System Tools\Command Prompt.lnk", $bytes)
  1093. # Create shortcut for "Devices and Printers" in "$env:APPDATA\Microsoft\Windows\Start Menu\Programs\System Tools"
  1094. # Создать ярлык для "Устройства и принтеры" в "$env:APPDATA\Microsoft\Windows\Start Menu\Programs\System Tools"
  1095. $target = "control"
  1096. $linkname = (Get-ControlPanelItem | Where-Object -FilterScript {$_.CanonicalName -eq "Microsoft.DevicesAndPrinters"}).Name
  1097. $link = "$env:APPDATA\Microsoft\Windows\Start Menu\Programs\System Tools\$linkname.lnk"
  1098. $shell = New-Object -ComObject Wscript.Shell
  1099. $shortcut = $shell.CreateShortcut($link)
  1100. $shortcut.TargetPath = $target
  1101. $shortcut.Arguments = "printers"
  1102. $shortCut.IconLocation = "$env:SystemRoot\system32\DeviceCenter.dll"
  1103. $shortcut.Save()
  1104. # Import Start menu layout from pre-saved reg file
  1105. # Импорт настроенного меню "Пуск" из заготовленного reg-файла
  1106. Add-Type -AssemblyName System.Windows.Forms
  1107. $OpenFileDialog = New-Object System.Windows.Forms.OpenFileDialog
  1108. # Initial directory "Downloads"
  1109. # Начальная папка "Загрузки"
  1110. $OpenFileDialog.InitialDirectory = Get-ItemPropertyValue -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "{374DE290-123F-4565-9164-39C4925E467B}"
  1111. $OpenFileDialog.Multiselect = $false
  1112. IF ($RU)
  1113. {
  1114. $OpenFileDialog.Filter = "Файлы реестра (*.reg)|*.reg|Все файлы (*.*)|*.*"
  1115. }
  1116. else
  1117. {
  1118. $OpenFileDialog.Filter = "Registration Files (*.reg)|*.reg|All Files (*.*)|*.*"
  1119. }
  1120. $OpenFileDialog.ShowHelp = $true
  1121. $OpenFileDialog.ShowDialog()
  1122. IF ($OpenFileDialog.FileName)
  1123. {
  1124. Remove-Item -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\CloudStore\Store\Cache\DefaultAccount -Recurse -Force
  1125. regedit.exe /s $OpenFileDialog.FileName
  1126. }
  1127. Else
  1128. {
  1129. # Unpin all Start Menu tiles
  1130. # Открепить все ярлыки от начального экрана
  1131. $tilecollection = Get-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\CloudStore\Store\Cache\DefaultAccount\*start.tilegrid`$windows.data.curatedtilecollection.tilecollection\Current
  1132. $unpin = $tilecollection.Data[0..25] + ([byte[]](202,50,0,226,44,1,1,0,0))
  1133. New-ItemProperty -Path $tilecollection.PSPath -Name Data -PropertyType Binary -Value $unpin -Force
  1134. # Show "Explorer" and "Settings" folders on Start menu
  1135. # Отобразить папки "Проводник" и "Параметры" в меню "Пуск"
  1136. $items = @("File Explorer", "Settings")
  1137. $startmenu = Get-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\CloudStore\Store\Cache\DefaultAccount\*windows.data.unifiedtile.startglobalproperties\Current"
  1138. $data = $startmenu.Data[0..19] -join ","
  1139. $data += ",203,50,10,$($items.Length)"
  1140. # Explorer
  1141. # Проводник
  1142. $data += ",5,188,201,168,164,1,36,140,172,3,68,137,133,1,102,160,129,186,203,189,215,168,164,130,1,0"
  1143. # Settings
  1144. # Параметры
  1145. $data += ",5,134,145,204,147,5,36,170,163,1,68,195,132,1,102,159,247,157,177,135,203,209,172,212,1,0"
  1146. $data += ",194,60,1,194,70,1,197,90,1,0"
  1147. New-ItemProperty -Path $startmenu.PSPath -Name Data -PropertyType Binary -Value $data.Split(",") -Force
  1148. }
  1149. # Show accent color on the title bars and window borders
  1150. # Отображать цвет элементов в заголовках окон и границ окон
  1151. New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\DWM -Name ColorPrevalence -Value 1 -Force
  1152. # Use the PrtScn button to open screen snipping
  1153. # Использовать клавишу Print Screen, чтобы запустить функцию создания фрагмента экрана
  1154. New-ItemProperty -Path "HKCU:\Control Panel\Keyboard" -Name PrintScreenKeyForSnippingEnabled -Value 1 -Force
  1155. # Do not allow automatic hiding if scroll bars in Windows
  1156. # Отключить автоматическое скрытие полос прокрутки в Windows
  1157. New-ItemProperty -Path "HKCU:\Control Panel\Accessibility" -Name DynamicScrollbars -Value 0 -Force
  1158. # Do not let websites provide locally relevant content by accessing language list
  1159. # Не позволять веб-сайтам предоставлять местную информацию за счет доступа к списку языков
  1160. New-ItemProperty -Path "HKCU:\Control Panel\International\User Profile" -Name HttpAcceptLanguageOptOut -Value 1 -Force
  1161. # Turn on Windows Defender Sandbox
  1162. # Запускать Защитник Windows в песочнице
  1163. [Console]::OutputEncoding = [System.Text.Encoding]::UTF8
  1164. setx /M MP_FORCE_USE_SANDBOX 1
  1165. # Set location of the "Desktop", "Documents" "Downloads" "Music", "Pictures", and "Videos"
  1166. # Переопределить расположение папок "Рабочий стол", "Документы", "Загрузки", "Музыка", "Изображения", "Видео"
  1167. Function KnownFolderPath
  1168. {
  1169. Param (
  1170. [Parameter(Mandatory = $true)]
  1171. [ValidateSet("Desktop", "Documents", "Downloads", "Music", "Pictures", "Videos")]
  1172. [string]$KnownFolder,
  1173. [Parameter(Mandatory = $true)]
  1174. [string]$Path
  1175. )
  1176. $KnownFolders = @{
  1177. "Desktop" = @("B4BFCC3A-DB2C-424C-B029-7FE99A87C641");
  1178. "Documents" = @("FDD39AD0-238F-46AF-ADB4-6C85480369C7", "f42ee2d3-909f-4907-8871-4c22fc0bf756");
  1179. "Downloads" = @("374DE290-123F-4565-9164-39C4925E467B", "7d83ee9b-2244-4e70-b1f5-5393042af1e4");
  1180. "Music" = @("4BD8D571-6D19-48D3-BE97-422220080E43", "a0c69a99-21c8-4671-8703-7934162fcf1d");
  1181. "Pictures" = @("33E28130-4E1E-4676-835A-98395C3BC3BB", "0ddd015d-b06c-45d5-8c4c-f59713854639");
  1182. "Videos" = @("18989B1D-99B5-455B-841C-AB7C74E4DDFC", "35286a68-3c57-41a1-bbb1-0eae73d76c95");
  1183. }
  1184. $Signature = @{
  1185. Namespace = "WinAPI"
  1186. Name = "KnownFolders"
  1187. Language = "CSharp"
  1188. MemberDefinition = @"
  1189. [DllImport("shell32.dll")]
  1190. public extern static int SHSetKnownFolderPath(ref Guid folderId, uint flags, IntPtr token, [MarshalAs(UnmanagedType.LPWStr)] string path);
  1191. "@
  1192. }
  1193. IF (-not ("WinAPI.KnownFolders" -as [type]))
  1194. {
  1195. Add-Type @Signature
  1196. }
  1197. foreach ($guid in $KnownFolders[$KnownFolder])
  1198. {
  1199. [WinAPI.KnownFolders]::SHSetKnownFolderPath([ref]$guid, 0, 0, $Path)
  1200. }
  1201. (Get-Item -Path $Path -Force ).Attributes = "ReadOnly"
  1202. }
  1203. [hashtable] $DesktopINI = @{
  1204. "Desktop" = "",
  1205. "[.ShellClassInfo]",
  1206. "LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21769",
  1207. "IconResource=%SystemRoot%\system32\imageres.dll,-183"
  1208. "Documents" = "",
  1209. "[.ShellClassInfo]",
  1210. "LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21770",
  1211. "IconResource=%SystemRoot%\system32\imageres.dll,-112",
  1212. "IconFile=%SystemRoot%\system32\shell32.dll",
  1213. "IconIndex=-235"
  1214. "Downloads" = "",
  1215. "[.ShellClassInfo]","LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21798",
  1216. "IconResource=%SystemRoot%\system32\imageres.dll,-184"
  1217. "Music" = "",
  1218. "[.ShellClassInfo]","LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21790",
  1219. "InfoTip=@%SystemRoot%\system32\shell32.dll,-12689",
  1220. "IconResource=%SystemRoot%\system32\imageres.dll,-108",
  1221. "IconFile=%SystemRoot%\system32\shell32.dll","IconIndex=-237"
  1222. "Pictures" = "",
  1223. "[.ShellClassInfo]",
  1224. "LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21779",
  1225. "InfoTip=@%SystemRoot%\system32\shell32.dll,-12688",
  1226. "IconResource=%SystemRoot%\system32\imageres.dll,-113",
  1227. "IconFile=%SystemRoot%\system32\shell32.dll",
  1228. "IconIndex=-236"
  1229. "Videos" = "",
  1230. "[.ShellClassInfo]",
  1231. "LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21791",
  1232. "InfoTip=@%SystemRoot%\system32\shell32.dll,-12690",
  1233. "IconResource=%SystemRoot%\system32\imageres.dll,-189",
  1234. "IconFile=%SystemRoot%\system32\shell32.dll","IconIndex=-238"
  1235. }
  1236. $drives = (Get-Disk | Where-Object -FilterScript {$_.BusType -ne "USB"} | Get-Partition | Get-Volume).DriveLetter
  1237. IF ($RU)
  1238. {
  1239. $OFS = ", "
  1240. Write-Host "Ваши диски: " -NoNewline
  1241. Write-Host "$($drives | Sort-Object -Unique)" -ForegroundColor Yellow
  1242. $OFS = " "
  1243. }
  1244. else
  1245. {
  1246. $OFS = ", "
  1247. Write-Host "`nYour drives: " -NoNewline
  1248. Write-Host "$($drives | Sort-Object -Unique)" -ForegroundColor Yellow
  1249. $OFS = " "
  1250. }
  1251. # Desktop
  1252. # Рабочий стол
  1253. IF ($RU)
  1254. {
  1255. Write-Host "`nВведите букву диска, в корне которого будет создана папка для " -NoNewline
  1256. Write-Host "`"Рабочий стол`"" -ForegroundColor Yellow
  1257. Write-Host "`nЧтобы пропустить, нажмите Enter" -NoNewline
  1258. }
  1259. else
  1260. {
  1261. Write-Host "`nType the drive letter in the root of which the " -NoNewline
  1262. Write-Host "`"Desktop`" " -ForegroundColor Yellow -NoNewline
  1263. Write-Host "folder will be created."
  1264. Write-Host "`nPress Enter to skip" -NoNewline
  1265. }
  1266. Do
  1267. {
  1268. $drive = Read-Host -Prompt " "
  1269. IF ($drives -eq $drive)
  1270. {
  1271. $drive = $(${drive}.ToUpper())
  1272. $DesktopFolder = "${drive}:\Desktop"
  1273. $DesktopReg = Get-ItemPropertyValue -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name Desktop
  1274. IF ($DesktopReg -ne $DesktopFolder)
  1275. {
  1276. IF (-not (Test-Path -Path $DesktopFolder))
  1277. {
  1278. New-Item -Path $DesktopFolder -ItemType Directory -Force
  1279. }
  1280. KnownFolderPath -KnownFolder Desktop -Path $DesktopFolder
  1281. New-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "{754AC886-DF64-4CBA-86B5-F7FBF4FBCEF5}" -PropertyType ExpandString -Value $DesktopFolder -Force
  1282. Set-Content -Path "$DesktopFolder\desktop.ini" -Value $DesktopINI["Desktop"] -Encoding Unicode -Force
  1283. (Get-Item -Path "$DesktopFolder\desktop.ini" -Force).Attributes = "Hidden", "System", "Archive"
  1284. (Get-Item -Path "$DesktopFolder\desktop.ini" -Force).Refresh()
  1285. }
  1286. }
  1287. elseif ([string]::IsNullOrEmpty($drive))
  1288. {
  1289. break
  1290. }
  1291. else
  1292. {
  1293. IF ($RU)
  1294. {
  1295. Write-Host "`nДиск $(${drive}.ToUpper()): не существует. " -ForegroundColor Yellow -NoNewline
  1296. Write-Host "Введите букву диска."
  1297. Write-Host "`nЧтобы пропустить, нажмите Enter" -NoNewline
  1298. }
  1299. else
  1300. {
  1301. Write-Host "The disk $(${drive}.ToUpper()): does not exist. " -ForegroundColor Yellow -NoNewline
  1302. Write-Host "Type the drive letter."
  1303. Write-Host "`nPress Enter to skip" -NoNewline
  1304. }
  1305. }
  1306. }
  1307. Until ($drives -eq $drive)
  1308. # Documents
  1309. # Документы
  1310. IF ($RU)
  1311. {
  1312. Write-Host "`nВведите букву диска, в корне которого будет создана папка для " -NoNewline
  1313. Write-Host "`"Документы`"" -ForegroundColor Yellow
  1314. Write-Host "`nЧтобы пропустить, нажмите Enter" -NoNewline
  1315. }
  1316. else
  1317. {
  1318. Write-Host "`nType the drive letter in the root of which the " -NoNewline
  1319. Write-Host "`"Documents`" " -ForegroundColor Yellow -NoNewline
  1320. Write-Host "folder will be created."
  1321. Write-Host "`nPress Enter to skip" -NoNewline
  1322. }
  1323. Do
  1324. {
  1325. $drive = Read-Host -Prompt " "
  1326. IF ($drives -eq $drive)
  1327. {
  1328. $drive = $(${drive}.ToUpper())
  1329. $DocumentsFolder = "${drive}:\Documents"
  1330. $DocumentsReg = Get-ItemPropertyValue -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name Personal
  1331. IF ($DocumentsReg -ne $DocumentsFolder)
  1332. {
  1333. IF (-not (Test-Path -Path $DocumentsFolder))
  1334. {
  1335. New-Item -Path $DocumentsFolder -ItemType Directory -Force
  1336. }
  1337. KnownFolderPath -KnownFolder Documents -Path $DocumentsFolder
  1338. New-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "{F42EE2D3-909F-4907-8871-4C22FC0BF756}" -PropertyType ExpandString -Value $DocumentsFolder -Force
  1339. Set-Content -Path "$DocumentsFolder\desktop.ini" -Value $DesktopINI["Documents"] -Encoding Unicode -Force
  1340. (Get-Item -Path "$DocumentsFolder\desktop.ini" -Force).Attributes = "Hidden", "System", "Archive"
  1341. (Get-Item -Path "$DocumentsFolder\desktop.ini" -Force).Refresh()
  1342. }
  1343. }
  1344. elseif ([string]::IsNullOrEmpty($drive))
  1345. {
  1346. break
  1347. }
  1348. else
  1349. {
  1350. IF ($RU)
  1351. {
  1352. Write-Host "`nДиск $(${drive}.ToUpper()): не существует. " -ForegroundColor Yellow -NoNewline
  1353. Write-Host "Введите букву диска."
  1354. Write-Host "`nЧтобы пропустить, нажмите Enter" -NoNewline
  1355. }
  1356. else
  1357. {
  1358. Write-Host "The disk $(${drive}.ToUpper()): does not exist. " -ForegroundColor Yellow -NoNewline
  1359. Write-Host "Type the drive letter."
  1360. Write-Host "`nPress Enter to skip" -NoNewline
  1361. }
  1362. }
  1363. }
  1364. Until ($drives -eq $drive)
  1365. # Downloads
  1366. # Загрузки
  1367. IF ($RU)
  1368. {
  1369. Write-Host "`nВведите букву диска, в корне которого будет создана папка для " -NoNewline
  1370. Write-Host "`"Загрузки`"" -ForegroundColor Yellow
  1371. Write-Host "`nЧтобы пропустить, нажмите Enter" -NoNewline
  1372. }
  1373. else
  1374. {
  1375. Write-Host "`nType the drive letter in the root of which the " -NoNewline
  1376. Write-Host "`"Downloads`" " -ForegroundColor Yellow -NoNewline
  1377. Write-Host "folder will be created."
  1378. Write-Host "`nPress Enter to skip" -NoNewline
  1379. }
  1380. Do
  1381. {
  1382. $drive = Read-Host -Prompt " "
  1383. IF ($drives -eq $drive)
  1384. {
  1385. $drive = $(${drive}.ToUpper())
  1386. $DownloadsFolder = "${drive}:\Downloads"
  1387. $DownloadsReg = Get-ItemPropertyValue -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "{374DE290-123F-4565-9164-39C4925E467B}"
  1388. IF ($DownloadsReg -ne $DownloadsFolder)
  1389. {
  1390. IF (-not (Test-Path -Path $DownloadsFolder))
  1391. {
  1392. New-Item -Path $DownloadsFolder -ItemType Directory -Force
  1393. }
  1394. KnownFolderPath -KnownFolder Downloads -Path $DownloadsFolder
  1395. New-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "{7D83EE9B-2244-4E70-B1F5-5393042AF1E4}" -PropertyType ExpandString -Value $DownloadsFolder -Force
  1396. Set-Content -Path "$DownloadsFolder\desktop.ini" -Value $DesktopINI["Downloads"] -Encoding Unicode -Force
  1397. (Get-Item -Path "$DownloadsFolder\desktop.ini" -Force).Attributes = "Hidden", "System", "Archive"
  1398. (Get-Item -Path "$DownloadsFolder\desktop.ini" -Force).Refresh()
  1399. # Microsoft Edge
  1400. $edge = (Get-AppxPackage "Microsoft.MicrosoftEdge").PackageFamilyName
  1401. New-ItemProperty -Path "HKCU:\Software\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\AppContainer\Storage\$edge\MicrosoftEdge\Main" -Name "Default Download Directory" -PropertyType String -Value $DownloadsFolder -Force
  1402. }
  1403. }
  1404. elseif ([string]::IsNullOrEmpty($drive))
  1405. {
  1406. break
  1407. }
  1408. else
  1409. {
  1410. IF ($RU)
  1411. {
  1412. Write-Host "`nДиск $(${drive}.ToUpper()): не существует. " -ForegroundColor Yellow -NoNewline
  1413. Write-Host "Введите букву диска."
  1414. Write-Host "`nЧтобы пропустить, нажмите Enter" -NoNewline
  1415. }
  1416. else
  1417. {
  1418. Write-Host "The disk $(${drive}.ToUpper()): does not exist. " -ForegroundColor Yellow -NoNewline
  1419. Write-Host "Type the drive letter."
  1420. Write-Host "`nPress Enter to skip" -NoNewline
  1421. }
  1422. }
  1423. }
  1424. Until ($drives -eq $drive)
  1425. # Music
  1426. # Музыка
  1427. IF ($RU)
  1428. {
  1429. Write-Host "`nВведите букву диска, в корне которого будет создана папка для " -NoNewline
  1430. Write-Host "`"Музыка`"" -ForegroundColor Yellow
  1431. Write-Host "`nЧтобы пропустить, нажмите Enter" -NoNewline
  1432. }
  1433. else
  1434. {
  1435. Write-Host "`nType the drive letter in the root of which the " -NoNewline
  1436. Write-Host "`"Music`" " -ForegroundColor Yellow -NoNewline
  1437. Write-Host "folder will be created."
  1438. Write-Host "`nPress Enter to skip" -NoNewline
  1439. }
  1440. Do
  1441. {
  1442. $drive = Read-Host -Prompt " "
  1443. IF ($drives -eq $drive)
  1444. {
  1445. $drive = $(${drive}.ToUpper())
  1446. $MusicFolder = "${drive}:\Music"
  1447. $MusicReg = Get-ItemPropertyValue -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "My Music"
  1448. IF ($MusicReg -ne $MusicFolder)
  1449. {
  1450. IF (-not (Test-Path -Path $MusicFolder))
  1451. {
  1452. New-Item -Path $MusicFolder -ItemType Directory -Force
  1453. }
  1454. KnownFolderPath -KnownFolder Music -Path $MusicFolder
  1455. New-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "{A0C69A99-21C8-4671-8703-7934162FCF1D}" -PropertyType ExpandString -Value $MusicFolder -Force
  1456. Set-Content -Path "$MusicFolder\desktop.ini" -Value $DesktopINI["Music"] -Encoding Unicode -Force
  1457. (Get-Item -Path "$MusicFolder\desktop.ini" -Force).Attributes = "Hidden", "System", "Archive"
  1458. (Get-Item -Path "$MusicFolder\desktop.ini" -Force).Refresh()
  1459. }
  1460. }
  1461. elseif ([string]::IsNullOrEmpty($drive))
  1462. {
  1463. break
  1464. }
  1465. else
  1466. {
  1467. IF ($RU)
  1468. {
  1469. Write-Host "`nДиск $(${drive}.ToUpper()): не существует. " -ForegroundColor Yellow -NoNewline
  1470. Write-Host "Введите букву диска."
  1471. Write-Host "`nЧтобы пропустить, нажмите Enter" -NoNewline
  1472. }
  1473. else
  1474. {
  1475. Write-Host "The disk $(${drive}.ToUpper()): does not exist. " -ForegroundColor Yellow -NoNewline
  1476. Write-Host "Type the drive letter."
  1477. Write-Host "`nPress Enter to skip" -NoNewline
  1478. }
  1479. }
  1480. }
  1481. Until ($drives -eq $drive)
  1482. # Pictures
  1483. # Изображения
  1484. IF ($RU)
  1485. {
  1486. Write-Host "`nВведите букву диска, в корне которого будет создана папка для " -NoNewline
  1487. Write-Host "`"Изображения`"" -ForegroundColor Yellow
  1488. Write-Host "`nЧтобы пропустить, нажмите Enter" -NoNewline
  1489. }
  1490. else
  1491. {
  1492. Write-Host "`nType the drive letter in the root of which the " -NoNewline
  1493. Write-Host "`"Pictures`" " -ForegroundColor Yellow -NoNewline
  1494. Write-Host "folder will be created."
  1495. Write-Host "`nPress Enter to skip" -NoNewline
  1496. }
  1497. Do
  1498. {
  1499. $drive = Read-Host -Prompt " "
  1500. IF ($drives -eq $drive)
  1501. {
  1502. $drive = $(${drive}.ToUpper())
  1503. $PicturesFolder = "${drive}:\Pictures"
  1504. $PicturesReg = Get-ItemPropertyValue -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "My Pictures"
  1505. IF ($PicturesReg -ne $PicturesFolder)
  1506. {
  1507. IF (-not (Test-Path -Path $PicturesFolder))
  1508. {
  1509. New-Item -Path $PicturesFolder -ItemType Directory -Force
  1510. }
  1511. KnownFolderPath -KnownFolder Pictures -Path $PicturesFolder
  1512. New-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "{0DDD015D-B06C-45D5-8C4C-F59713854639}" -PropertyType ExpandString -Value $PicturesFolder -Force
  1513. Set-Content -Path "$PicturesFolder\desktop.ini" -Value $DesktopINI["Pictures"] -Encoding Unicode -Force
  1514. (Get-Item -Path "$PicturesFolder\desktop.ini" -Force).Attributes = "Hidden", "System", "Archive"
  1515. (Get-Item -Path "$PicturesFolder\desktop.ini" -Force).Refresh()
  1516. }
  1517. }
  1518. elseif ([string]::IsNullOrEmpty($drive))
  1519. {
  1520. break
  1521. }
  1522. else
  1523. {
  1524. IF ($RU)
  1525. {
  1526. Write-Host "`nДиск $(${drive}.ToUpper()): не существует. " -ForegroundColor Yellow -NoNewline
  1527. Write-Host "Введите букву диска."
  1528. Write-Host "`nЧтобы пропустить, нажмите Enter" -NoNewline
  1529. }
  1530. else
  1531. {
  1532. Write-Host "`nThe disk $(${drive}.ToUpper()): does not exist. " -ForegroundColor Yellow -NoNewline
  1533. Write-Host "Type the drive letter."
  1534. Write-Host "`nPress Enter to skip" -NoNewline
  1535. }
  1536. }
  1537. }
  1538. Until ($drives -eq $drive)
  1539. # Videos
  1540. # Видео
  1541. IF ($RU)
  1542. {
  1543. Write-Host "`nВведите букву диска, в корне которого будет создана папка для " -NoNewline
  1544. Write-Host "`"Видео`"" -ForegroundColor Yellow
  1545. Write-Host "`nЧтобы пропустить, нажмите Enter" -NoNewline
  1546. }
  1547. else
  1548. {
  1549. Write-Host "`nType the drive letter in the root of which the " -NoNewline
  1550. Write-Host "`"Videos`" " -ForegroundColor Yellow -NoNewline
  1551. Write-Host "folder will be created."
  1552. Write-Host "`nPress Enter to skip" -NoNewline
  1553. }
  1554. Do
  1555. {
  1556. $drive = Read-Host -Prompt " "
  1557. IF ($drives -eq $drive)
  1558. {
  1559. $drive = $(${drive}.ToUpper())
  1560. $VideosFolder = "${drive}:\Videos"
  1561. $VideosReg = Get-ItemPropertyValue -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "My Video"
  1562. IF ($VideosReg -ne $VideosFolder)
  1563. {
  1564. IF (-not (Test-Path -Path $VideosFolder))
  1565. {
  1566. New-Item -Path $VideosFolder -ItemType Directory -Force
  1567. }
  1568. KnownFolderPath -KnownFolder Videos -Path $VideosFolder
  1569. New-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "{35286A68-3C57-41A1-BBB1-0EAE73D76C95}" -PropertyType ExpandString -Value $VideosFolder -Force
  1570. Set-Content -Path "$VideosFolder\desktop.ini" -Value $DesktopINI["Videos"] -Encoding Unicode -Force
  1571. (Get-Item -Path "$VideosFolder\desktop.ini" -Force).Attributes = "Hidden", "System", "Archive"
  1572. (Get-Item -Path "$VideosFolder\desktop.ini" -Force).Refresh()
  1573. }
  1574. }
  1575. elseif ([string]::IsNullOrEmpty($drive))
  1576. {
  1577. break
  1578. }
  1579. else
  1580. {
  1581. IF ($RU)
  1582. {
  1583. Write-Host "`nДиск $(${drive}.ToUpper()): не существует. " -ForegroundColor Yellow -NoNewline
  1584. Write-Host "Введите букву диска."
  1585. Write-Host "`nЧтобы пропустить, нажмите Enter" -NoNewline
  1586. }
  1587. else
  1588. {
  1589. Write-Host "`nThe disk $(${drive}.ToUpper()): does not exist. " -ForegroundColor Yellow -NoNewline
  1590. Write-Host "Type the drive letter."
  1591. Write-Host "`nPress Enter to skip" -NoNewline
  1592. }
  1593. }
  1594. }
  1595. Until ($drives -eq $drive)
  1596. # Save screenshots by pressing Win+PrtScr to the Desktop
  1597. # Сохранить скриншот по Win+PrtScr на рабочем столе
  1598. $value = Get-ItemPropertyValue -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name Desktop
  1599. New-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FolderDescriptions\{b7bede81-df94-4682-a7d8-57a52620b86f}" -Name RelativePath -PropertyType String -Value $value -Force
  1600. # Remove "$env:SystemDrive\PerfLogs"
  1601. # Удалить "$env:SystemDrive\PerfLogs"
  1602. Remove-Item $env:SystemDrive\PerfLogs -Recurse -Force -ErrorAction SilentlyContinue
  1603. # Remove "$env:LOCALAPPDATA\Temp"
  1604. # Удалить "$env:LOCALAPPDATA\Temp"
  1605. Remove-Item $env:LOCALAPPDATA\Temp -Recurse -Force -ErrorAction SilentlyContinue
  1606. # Remove "$env:SYSTEMROOT\Temp"
  1607. # Удалить "$env:SYSTEMROOT\Temp"
  1608. Restart-Service -Name Spooler -Force
  1609. Remove-Item -Path "$env:SystemRoot\Temp" -Recurse -Force -ErrorAction SilentlyContinue
  1610. # Show more Windows Update restart notifications about restarting
  1611. # Показывать уведомление, когда компьютеру требуется перезагрузка для завершения обновления
  1612. New-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings -Name RestartNotificationsAllowed2 -Value 1 -Force
  1613. # Set "High performance" in graphics performance preference for app
  1614. # Установить параметры производительности графики для отдельных приложений на "Высокая производительность"
  1615. IF ((Get-CimInstance -ClassName Win32_ComputerSystem).PCSystemType -ne 2 -and (Get-CimInstance -ClassName Win32_VideoController | Where-Object -FilterScript {$_.AdapterDACType -ne "Internal" -and $null -ne $_.AdapterDACType}))
  1616. {
  1617. IF ($RU)
  1618. {
  1619. Write-Host "`nВведите полные пути до .exe файлов, " -NoNewline
  1620. Write-Host "для которого следует установить"
  1621. Write-Host "параметры производительности графики на `"Высокая производительность`"."
  1622. Write-Host "Пути должны быть разделены запятыми и взяты в кавычки." -ForegroundColor Yellow
  1623. Write-Host "`nЧтобы пропустить, нажмите Enter" -NoNewline
  1624. }
  1625. else
  1626. {
  1627. Write-Host "`nType the full paths to .exe files for which to set"
  1628. Write-Host "graphics performance preference to `"High performance GPU`"."
  1629. Write-Host "The paths must be separated by commas and taken in quotes." -ForegroundColor Yellow
  1630. Write-Host "`nPress Enter to skip" -NoNewline
  1631. }
  1632. IF (Test-Path -Path "${env:ProgramFiles(x86)}\Steam")
  1633. {
  1634. Start-Process -FilePath "${env:ProgramFiles(x86)}\Steam\steamapps\common"
  1635. }
  1636. function GpuPreference
  1637. {
  1638. [CmdletBinding()]
  1639. Param
  1640. (
  1641. [Parameter(Mandatory = $True)]
  1642. [string[]]$apps
  1643. )
  1644. $apps = $apps.Replace("`"", "").Split(",").Trim()
  1645. foreach ($app in $apps)
  1646. {
  1647. New-ItemProperty -Path HKCU:\Software\Microsoft\DirectX\UserGpuPreferences -Name $app -Type String -Value "GpuPreference=2;" -Force
  1648. }
  1649. }
  1650. Do
  1651. {
  1652. $apps = Read-Host -Prompt " "
  1653. IF ($apps -match ".exe" -and $apps -match "`"")
  1654. {
  1655. GpuPreference $apps
  1656. }
  1657. elseif ([string]::IsNullOrEmpty($apps))
  1658. {
  1659. break
  1660. }
  1661. else
  1662. {
  1663. IF ($RU)
  1664. {
  1665. Write-Host "`nПути не взяты в кавычки или не содержат ссылки на .exe файлы." -ForegroundColor Yellow
  1666. Write-Host "Введите полные пути до .exe файлов, взяв в кавычки и разделив запятыми."
  1667. Write-Host "`nЧтобы пропустить, нажмите Enter" -NoNewline
  1668. }
  1669. else
  1670. {
  1671. Write-Host "`nThe paths hasn't been taken in quotes or do not contain links to .exe files" -ForegroundColor Yellow
  1672. Write-Host "Type the full paths to .exe files by quoting and separating by commas."
  1673. Write-Host "`nPress Enter to skip" -NoNewline
  1674. }
  1675. }
  1676. }
  1677. Until ($apps -match ".exe" -and $apps -match "`"")
  1678. }
  1679. # Automatically adjust active hours for me based on daily usage
  1680. # Автоматически изменять период активности для этого устройства на основе действий
  1681. New-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings -Name SmartActiveHoursState -Value 1 -Force
  1682. # Turn on automatic recommended troubleshooting
  1683. # Устранять проблемы без запроса
  1684. IF (-not (Test-Path -Path HKLM:\SOFTWARE\Microsoft\WindowsMitigation))
  1685. {
  1686. New-Item -Path HKLM:\SOFTWARE\Microsoft\WindowsMitigation -Force
  1687. }
  1688. New-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\WindowsMitigation -Name UserPreference -Value 4 -Force
  1689. # Turn on Windows Sandbox
  1690. # Включить Windows Sandbox
  1691. IF (Get-WindowsEdition -Online | Where-Object -FilterScript {$_.Edition -eq "Professional" -or $_.Edition -eq "Enterprise"})
  1692. {
  1693. IF ((Get-CimInstance -ClassName CIM_Processor).VirtualizationFirmwareEnabled -eq $true)
  1694. {
  1695. Enable-WindowsOptionalFeature –FeatureName Containers-DisposableClientVM -All -Online -NoRestart
  1696. }
  1697. else
  1698. {
  1699. try
  1700. {
  1701. IF ((Get-CimInstance –ClassName CIM_ComputerSystem).HypervisorPresent -eq $true)
  1702. {
  1703. Enable-WindowsOptionalFeature –FeatureName Containers-DisposableClientVM -All -Online -NoRestart
  1704. }
  1705. }
  1706. catch
  1707. {
  1708. Write-Error "Enable Virtualization in BIOS"
  1709. }
  1710. }
  1711. }
  1712. # Turn off reserved storage
  1713. # Отключить зарезервированное хранилище
  1714. New-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\ReserveManager -Name BaseHardReserveSize -PropertyType QWord -Value 0 -Force
  1715. New-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\ReserveManager -Name BaseSoftReserveSize -PropertyType QWord -Value 0 -Force
  1716. New-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\ReserveManager -Name HardReserveAdjustment -PropertyType QWord -Value 0 -Force
  1717. New-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\ReserveManager -Name MinDiskSize -PropertyType QWord -Value 0 -Force
  1718. New-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\ReserveManager -Name ShippedWithReserves -Value 0 -Force
  1719. # Launch folder in a separate process
  1720. # Запускать окна с папками в отдельном процессе
  1721. New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced -Name SeparateProcess -Value 1 -Force
  1722. # Turn on automatic backup the system registry to the "$env:SystemRoot\System32\config\RegBack" folder
  1723. # Включить автоматическое создание копии реестра в папку "$env:SystemRoot\System32\config\RegBack"
  1724. New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Configuration Manager" -Name EnablePeriodicBackup -Value 1 -Force
  1725. # Restart Start menu
  1726. # Перезапустить меню "Пуск"
  1727. Stop-Process -Name StartMenuExperienceHost -Force
  1728. # Refresh desktop icons, environment variables and taskbar without restarting File Explorer
  1729. # Обновить иконки рабочего стола, переменные среды и панель задач без перезапуска "Проводника"
  1730. $UpdateEnvExplorerAPI = @{
  1731. Namespace = "WinAPI"
  1732. Name = "UpdateEnvExplorer"
  1733. Language = "CSharp"
  1734. MemberDefinition = @"
  1735. private static readonly IntPtr HWND_BROADCAST = new IntPtr(0xffff);
  1736. private const int WM_SETTINGCHANGE = 0x1a;
  1737. private const int SMTO_ABORTIFHUNG = 0x0002;
  1738. [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = false)]
  1739. static extern bool SendNotifyMessage(IntPtr hWnd, uint Msg, IntPtr wParam, string lParam);
  1740. [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = false)]
  1741. private static extern IntPtr SendMessageTimeout(IntPtr hWnd, int Msg, IntPtr wParam, string lParam, int fuFlags, int uTimeout, IntPtr lpdwResult);
  1742. [DllImport("shell32.dll", CharSet = CharSet.Auto, SetLastError = false)]
  1743. private static extern int SHChangeNotify(int eventId, int flags, IntPtr item1, IntPtr item2);
  1744. public static void Refresh()
  1745. {
  1746. // Update desktop icons
  1747. SHChangeNotify(0x8000000, 0x1000, IntPtr.Zero, IntPtr.Zero);
  1748. // Update environment variables
  1749. SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, IntPtr.Zero, null, SMTO_ABORTIFHUNG, 100, IntPtr.Zero);
  1750. // Update taskbar
  1751. SendNotifyMessage(HWND_BROADCAST, WM_SETTINGCHANGE, IntPtr.Zero, "TraySettings");
  1752. }
  1753. "@
  1754. }
  1755. IF (-not ("WinAPI.UpdateEnvExplorer" -as [type]))
  1756. {
  1757. Add-Type @UpdateEnvExplorerAPI
  1758. }
  1759. [WinAPI.UpdateEnvExplorer]::Refresh()
  1760. # Errors output
  1761. # Вывод ошибок
  1762. Write-Host "`nErrors" -BackgroundColor Red
  1763. ($Error | Where-Object -FilterScript {$_ -notmatch "Taskmgr" -and $_ -notmatch "TaskManager"} | ForEach-Object -Process {
  1764. [PSCustomObject] @{
  1765. Line = $_.InvocationInfo.ScriptLineNumber
  1766. Error = $_.Exception.Message
  1767. }
  1768. } | Format-Table -AutoSize -Wrap | Out-String).Trim()