Настройка Windows 10 через командную строку и PowerShell — скрытые возможности без сторонних программ

Проблема

Стандартная установка Windows 10 содержит множество компонентов, которые не нужны в корпоративной среде, но штатные графические интерфейсы не позволяют полностью отключить телеметрию, скрыть рекламные разделы, удалить неудаляемые UWP-приложения или массово настроить параметры конфиденциальности. Администраторы часто обращаются к сторонним утилитам (ShutUp10, WPD, Sophia Script), однако каждое такое средство вносит непрозрачные изменения в реестр, требует обновлений и вызывает обоснованные опасения службы безопасности. На самом деле почти все операции тонкой настройки можно выполнить встроенными средствами Windows 10/11. программа настройки для Windows 10  это не обязательно графический твикер: командная строка и PowerShell предоставляют полный контроль над операционной системой без установки дополнительного ПО. В этой статье мы разберём практические команды и скрипты, которые позволяют сисадмину быстро привести систему к нужному состоянию, задокументировать изменения и при необходимости откатить их.

Решение

Используем связку классической командной строки (CMD), PowerShell и встроенных утилит (DISM, SFC, reg, schtasks). Все команды можно выполнять как локально, так и удалённо через WinRM. Мы соберём типовые задачи по категориям: конфиденциальность, удаление приложений, интерфейс, службы и автозагрузка. Большинство операций основано на изменении параметров реестра, поэтому перед началом работы рекомендую создать точку восстановления системы или экспортировать ветки реестра, которые будут затронуты.

Источники, на которые опирается инструкция:

Пошаговая инструкция

Шаг 1. Настройка конфиденциальности и отключение телеметрии через PowerShell

Многие параметры конфиденциальности управляются политиками реестра. Для административного применения потребуется запуск PowerShell с правами администратора (Win + X, затем Windows PowerShell (Администратор)).

Отключение телеметрии на уровне «Безопасность» (0 — только данные безопасности):

powershell

Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\DataCollection" -Name "AllowTelemetry" -Type DWord -Value 0
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\DataCollection" -Name "AllowTelemetry" -Type DWord -Value 0
Set-ItemProperty -Path "HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Policies\DataCollection" -Name "AllowTelemetry" -Type DWord -Value 0

Отключение Cortana и веб-поиска в меню «Пуск»:

powershell

Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\Windows Search" -Name "AllowCortana" -Type DWord -Value 0
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\Windows Search" -Name "DisableWebSearch" -Type DWord -Value 1
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\Windows Search" -Name "ConnectedSearchUseWeb" -Type DWord -Value 0

Отключение рекламных идентификаторов и предложений:

powershell

Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\AdvertisingInfo" -Name "Enabled" -Type DWord -Value 0
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\CloudContent" -Name "DisableWindowsConsumerFeatures" -Type DWord -Value 1

Запрет доступа приложений к рекламному идентификатору:

powershell

Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Privacy" -Name "TailoredExperiencesWithDiagnosticDataEnabled" -Type DWord -Value 0

После внесения изменений перезагружать компьютер не обязательно, но рекомендуется для полного применения некоторых политик.

Шаг 2. Удаление и повторная установка встроенных UWP-приложений

PowerShell даёт возможность удалить Modern-приложения как для текущего пользователя, так и из системного образа.

Удаление конкретного приложения (например, Xbox):

powershell

Get-AppxPackage *xbox* | Remove-AppxPackage

Удаление всех предустановленных приложений для всех пользователей (осторожно!):

powershell

Get-AppxPackage -AllUsers | Where-Object { $_.Name -notlike "*Store*" -and $_.Name -notlike "*Calculator*" -and $_.Name -notlike "*WindowsTerminal*" } | Remove-AppxPackage -AllUsers

В примере выше оставлены Microsoft Store, Калькулятор и Терминал вы можете настроить фильтр под свои задачи.

Удаление предустановленных пакетов из образа системы (после этого приложения не установятся для новых пользователей):

powershell

Get-AppxProvisionedPackage -Online | Where-Object { $_.DisplayName -notlike "*Store*" } | Remove-AppxProvisionedPackage -Online

Эта команда удаляет provisining-пакеты, поэтому после создания новой учётной записи удалённые приложения не появятся.

Восстановление всех стандартных приложений (если что-то пошло не так):

powershell

Get-AppxPackage -AllUsers | ForEach { Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml" }

Шаг 3. Настройка интерфейса и проводника

Многие настройки, скрытые от графического интерфейса, доступны через реестр.

Отображение расширений файлов и скрытых папок в проводнике:

powershell

Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" -Name "HideFileExt" -Type DWord -Value 0
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" -Name "Hidden" -Type DWord -Value 1

Запуск проводника в режиме «Этот компьютер» вместо «Быстрого доступа»:

powershell

Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" -Name "LaunchTo" -Type DWord -Value 1

Отключение вкладки «Быстрый доступ»:

powershell

Remove-Item -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\HomeFolderDesktop" -Force -ErrorAction SilentlyContinue

Отключение залипания клавиш и анимаций (для улучшения отзывчивости):

powershell

Set-ItemProperty -Path "HKCU:\Control Panel\Accessibility\StickyKeys" -Name "Flags" -Type String -Value "506"
Set-ItemProperty -Path "HKCU:\Control Panel\Accessibility\ToggleKeys" -Name "Flags" -Type String -Value "58"
Set-ItemProperty -Path "HKCU:\Control Panel\Accessibility\FilterKeys" -Name "Flags" -Type String -Value "122"
# Отключение визуальных эффектов (можно задать параметр Performance)
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects" -Name "VisualFXSetting" -Type DWord -Value 2

Значение 2 соответствует «Обеспечить наилучшее быстродействие».

Шаг 4. Управление службами и автозагрузкой

Службы можно массово отключать в PowerShell. Однако будьте осторожны: отключение критичных служб может нарушить работу системы.

Отключение служб диагностики и отслеживания (Diagnostic Tracking Service, dmwappushsvc):

powershell

Stop-Service DiagTrack -Force
Set-Service DiagTrack -StartupType Disabled
Stop-Service dmwappushservice -Force
Set-Service dmwappushservice -StartupType Disabled

Отключение редко используемых служб (факс, Xbox Live и т.п.):

powershell

$services = @("XblAuthManager", "XblGameSave", "XboxNetApiSvc", "XboxGipSvc", "Fax", "wisvc", "WSearch")
foreach ($svc in $services) {
    Stop-Service $svc -Force -ErrorAction SilentlyContinue
    Set-Service $svc -StartupType Disabled -ErrorAction SilentlyContinue
}

Управление автозагрузкой через PowerShell:

Список автозагрузок текущего пользователя:

powershell

Get-CimInstance Win32_StartupCommand | Select-Object Name, Command, Location, User

Отключение конкретной записи (требуется удалить из реестра или отключить задачу в планировщике). Для записей реестра:

powershell

Remove-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Run" -Name "SomeApp" -Force

Шаг 5. Очистка системы и восстановление хранилища компонентов

Стандартные средства обслуживания всегда под рукой.

Очистка временных файлов и корзины (PowerShell):

powershell

CleanMgr /sageset:1
CleanMgr /sagerun:1

или напрямую удалить временные папки:

powershell

Remove-Item -Path "$env:TEMP\*" -Recurse -Force -ErrorAction SilentlyContinue
Remove-Item -Path "C:\Windows\Temp\*" -Recurse -Force -ErrorAction SilentlyContinue

Восстановление системных файлов и образа (CMD от администратора):

cmd

sfc /scannow
DISM /Online /Cleanup-Image /RestoreHealth

Сжатие операционной системы для экономии места (Compact OS):

cmd

Compact.exe /CompactOS:always

Шаг 6. Создание собственного скрипта автоматизации

Чтобы не вводить команды вручную на каждом компьютере, можно сохранить весь блок в один файл Configure-Win10.ps1 и запускать от администратора. Примерный шаблон:

powershell

#Requires -RunAsAdministrator
# Скрипт базовой настройки Windows 10
Write-Host "Настройка конфиденциальности..." -ForegroundColor Green
# ... команды из шага 1 ...
Write-Host "Удаление UWP-приложений..." -ForegroundColor Green
# ... команды из шага 2 ...
Write-Host "Очистка системы..." -ForegroundColor Green
# ... команды шага 5 ...
Write-Host "Готово. Рекомендуется перезагрузить компьютер."

Сохраните скрипт и запускайте на целевых машинах через групповые политики (GPO) или систему управления конфигурациями. Перед массовым внедрением обязательно протестируйте на эталонной виртуальной машине.

Устранение распространённых проблем

СимптомВероятная причинаРешение
После удаления приложений не работает поиск или меню «Пуск»Удалено приложение Microsoft.Windows.ShellExperienceHost или windows.immersivecontrolpanelНе удаляйте эти компоненты. Восстановите их командой Get-AppxPackage -AllUsers | ForEach { Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml" }. Перезагрузитесь.
При запуске PowerShell-команд появляется ошибка доступаPowerShell запущен без прав администратораЗакройте окно и откройте от имени администратора.
После отключения служб перестала работать учётная запись Microsoft или синхронизацияОтключена служба wlidsvc или TokenBrokerЕсли вам нужна синхронизация, не отключайте эти службы. В противном случае включите их обратно: Set-Service wlidsvc -StartupType Manual.
После выполнения Remove-AppxProvisionedPackage приложения не появляются у новых пользователейТак и задумано, но, возможно, вы удалили нужное приложениеОпределить имя удалённого пакета можно, посмотрев историю команд. Для восстановления используйте Add-AppxProvisionedPackage.
Команды реестра не дали эффектаНе перезагружен процесс explorer.exe или сама системаВыполните Restart-Process explorer и перезагрузите компьютер.

Для тех кто дочитал до конца вот полный скрипт PowerShell, объединяющий команды всех шагов, описанных в статье. Сохраните его в файл с расширением .ps1 (например, Win10-Baseline.ps1) и запускайте в среде PowerShell от имени администратора.

powershell

#Requires -RunAsAdministrator
<#
.SYNOPSIS
    Скрипт базовой настройки Windows 10/11 для системных администраторов.
    Отключает телеметрию, рекламу, ненужные службы, удаляет UWP-приложения,
    настраивает интерфейс и выполняет очистку системы.

.DESCRIPTION
    Этот скрипт выполняет операции, описанные в статье "Настройка Windows 10 
    через командную строку и PowerShell: скрытые возможности без сторонних программ".
    Перед применением в продуктивном окружении протестируйте на одной машине.
    Рекомендуется создать точку восстановления системы до запуска.

.NOTES
    Автор: на основе статьи в техническом блоге
    Версия: 1.0
#>

Write-Host "=============================================" -ForegroundColor Cyan
Write-Host "  Базовая настройка Windows 10/11" -ForegroundColor Cyan
Write-Host "=============================================" -ForegroundColor Cyan
Write-Host ""

#region Шаг 1: Настройка конфиденциальности и отключение телеметрии
Write-Host "[1/5] Настройка конфиденциальности..." -ForegroundColor Green

# Отключение телеметрии на уровне безопасности (0 - только данные безопасности)
Write-Host "  - Отключение телеметрии..." -ForegroundColor Gray
$telemetryPaths = @(
    "HKLM:\SOFTWARE\Policies\Microsoft\Windows\DataCollection",
    "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\DataCollection",
    "HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Policies\DataCollection"
)
foreach ($path in $telemetryPaths) {
    if (-not (Test-Path $path)) {
        New-Item -Path $path -Force | Out-Null
    }
    Set-ItemProperty -Path $path -Name "AllowTelemetry" -Type DWord -Value 0 -ErrorAction SilentlyContinue
}

# Отключение Cortana и веб-поиска в меню Пуск
Write-Host "  - Отключение Cortana и веб-поиска..." -ForegroundColor Gray
$cortanaPath = "HKLM:\SOFTWARE\Policies\Microsoft\Windows\Windows Search"
if (-not (Test-Path $cortanaPath)) {
    New-Item -Path $cortanaPath -Force | Out-Null
}
Set-ItemProperty -Path $cortanaPath -Name "AllowCortana" -Type DWord -Value 0 -ErrorAction SilentlyContinue
Set-ItemProperty -Path $cortanaPath -Name "DisableWebSearch" -Type DWord -Value 1 -ErrorAction SilentlyContinue
Set-ItemProperty -Path $cortanaPath -Name "ConnectedSearchUseWeb" -Type DWord -Value 0 -ErrorAction SilentlyContinue

# Отключение рекламных идентификаторов
Write-Host "  - Отключение рекламных идентификаторов..." -ForegroundColor Gray
$advertPath = "HKCU:\Software\Microsoft\Windows\CurrentVersion\AdvertisingInfo"
if (-not (Test-Path $advertPath)) {
    New-Item -Path $advertPath -Force | Out-Null
}
Set-ItemProperty -Path $advertPath -Name "Enabled" -Type DWord -Value 0 -ErrorAction SilentlyContinue

# Запрет доступа приложений к рекламному идентификатору
$privacyPath = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Privacy"
if (-not (Test-Path $privacyPath)) {
    New-Item -Path $privacyPath -Force | Out-Null
}
Set-ItemProperty -Path $privacyPath -Name "TailoredExperiencesWithDiagnosticDataEnabled" -Type DWord -Value 0 -ErrorAction SilentlyContinue

# Отключение потребительских возможностей Windows
$cloudContentPath = "HKLM:\SOFTWARE\Policies\Microsoft\Windows\CloudContent"
if (-not (Test-Path $cloudContentPath)) {
    New-Item -Path $cloudContentPath -Force | Out-Null
}
Set-ItemProperty -Path $cloudContentPath -Name "DisableWindowsConsumerFeatures" -Type DWord -Value 1 -ErrorAction SilentlyContinue

Write-Host "  Готово." -ForegroundColor Green
#endregion

#region Шаг 2: Удаление встроенных UWP-приложений
Write-Host "[2/5] Удаление UWP-приложений..." -ForegroundColor Green

# Список приложений для удаления (можно редактировать под свои требования)
$appsToRemove = @(
    "*xbox*",                # Xbox и сопутствующие
    "*zune*",                # Groove Music (Zune)
    "*bing*",                # Bing (погода, финансы, спорт)
    "*skypeapp*",            # Skype (UWP-версия)
    "*officehub*",           # Office Hub
    "*onenote*",             # OneNote
    "*3d*",                  # 3D Builder, 3D Viewer
    "*candy*",               # Candy Crush
    "*solitaire*",           # Microsoft Solitaire Collection
    "*mixedreality*",        # Mixed Reality Portal
    "*maps*",                # Карты
    "*yourphone*",           # Your Phone
    "*feedback*"             # Feedback Hub
)

Write-Host "  - Удаление приложений текущего пользователя..." -ForegroundColor Gray
foreach ($app in $appsToRemove) {
    Get-AppxPackage -Name $app -ErrorAction SilentlyContinue | Remove-AppxPackage -ErrorAction SilentlyContinue
    Write-Host "    $app" -ForegroundColor DarkGray
}

Write-Host "  - Удаление приложений из системного образа (provisioned)..." -ForegroundColor Gray
foreach ($app in $appsToRemove) {
    Get-AppxProvisionedPackage -Online | Where-Object { $_.DisplayName -like $app } | Remove-AppxProvisionedPackage -Online -ErrorAction SilentlyContinue
}

# Примечание: Microsoft Store, Calculator и Windows Terminal намеренно не удаляются.
Write-Host "  Готово." -ForegroundColor Green
#endregion

#region Шаг 3: Настройка интерфейса и проводника
Write-Host "[3/5] Настройка интерфейса..." -ForegroundColor Green

# Отображение расширений файлов и скрытых папок
Write-Host "  - Включение отображения расширений и скрытых файлов..." -ForegroundColor Gray
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" -Name "HideFileExt" -Type DWord -Value 0 -ErrorAction SilentlyContinue
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" -Name "Hidden" -Type DWord -Value 1 -ErrorAction SilentlyContinue

# Запуск проводника в режиме "Этот компьютер"
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" -Name "LaunchTo" -Type DWord -Value 1 -ErrorAction SilentlyContinue

# Отключение быстрого доступа (удаление раздела, если существует)
Remove-Item -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\HomeFolderDesktop" -Force -ErrorAction SilentlyContinue

# Отключение залипания клавиш (Sticky Keys, Toggle Keys, Filter Keys)
Write-Host "  - Отключение залипания клавиш..." -ForegroundColor Gray
Set-ItemProperty -Path "HKCU:\Control Panel\Accessibility\StickyKeys" -Name "Flags" -Type String -Value "506" -ErrorAction SilentlyContinue
Set-ItemProperty -Path "HKCU:\Control Panel\Accessibility\ToggleKeys" -Name "Flags" -Type String -Value "58" -ErrorAction SilentlyContinue
Set-ItemProperty -Path "HKCU:\Control Panel\Accessibility\FilterKeys" -Name "Flags" -Type String -Value "122" -ErrorAction SilentlyContinue

# Установка визуальных эффектов на "Обеспечить наилучшее быстродействие"
Write-Host "  - Настройка визуальных эффектов на производительность..." -ForegroundColor Gray
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects" -Name "VisualFXSetting" -Type DWord -Value 2 -ErrorAction SilentlyContinue

# Перезапуск проводника для применения части настроек
Write-Host "  - Перезапуск проводника..." -ForegroundColor Gray
Stop-Process -Name explorer -Force -ErrorAction SilentlyContinue
Start-Sleep -Seconds 2
Start-Process explorer.exe

Write-Host "  Готово." -ForegroundColor Green
#endregion

#region Шаг 4: Управление службами и автозагрузкой
Write-Host "[4/5] Отключение ненужных служб..." -ForegroundColor Green

# Список служб для отключения (добавляйте свои по необходимости)
$servicesToDisable = @(
    "DiagTrack",            # Диагностическое отслеживание
    "dmwappushservice",     # Служба push-уведомлений DMW
    "XblAuthManager",       # Xbox Live Auth Manager
    "XblGameSave",          # Xbox Live Game Save
    "XboxNetApiSvc",        # Xbox Live Networking
    "XboxGipSvc",           # Xbox Game Input Protocol
    "Fax",                  # Факс
    "wisvc",                # Windows Insider Service
    "WSearch",              # Windows Search (если не нужен поиск)
    "TrkWks",               # Distributed Link Tracking Client
    "lfsvc",                # Служба геолокации
    "MapsBroker",           # Загрузка карт
    "RemoteRegistry"        # Удаленный реестр (редко нужен)
)

foreach ($svc in $servicesToDisable) {
    Write-Host "  - $svc..." -ForegroundColor Gray
    Stop-Service $svc -Force -ErrorAction SilentlyContinue
    Set-Service $svc -StartupType Disabled -ErrorAction SilentlyContinue
}

# Примечание: если поиск Windows нужен, закомментируйте 'WSearch'
Write-Host "  Готово." -ForegroundColor Green
#endregion

#region Шаг 5: Очистка системы и восстановление хранилища компонентов
Write-Host "[5/5] Очистка системы..." -ForegroundColor Green

# Очистка временных папок
Write-Host "  - Очистка временных файлов..." -ForegroundColor Gray
$tempPaths = @(
    "$env:TEMP\*",
    "C:\Windows\Temp\*",
    "C:\Windows\Prefetch\*"
)
foreach ($tempPath in $tempPaths) {
    Remove-Item -Path $tempPath -Recurse -Force -ErrorAction SilentlyContinue
}

# Запуск встроенной очистки диска (автоматический режим для системного диска)
Write-Host "  - Запуск очистки диска..." -ForegroundColor Gray
Start-Process -FilePath "cleanmgr.exe" -ArgumentList "/sagerun:1" -Wait -NoNewWindow -ErrorAction SilentlyContinue

# Восстановление системных файлов и хранилища компонентов
Write-Host "  - Проверка и восстановление системных файлов (SFC)..." -ForegroundColor Gray
sfc /scannow

Write-Host "  - Восстановление образа системы (DISM)..." -ForegroundColor Gray
DISM /Online /Cleanup-Image /RestoreHealth

# Сжатие операционной системы (экономия места)
Write-Host "  - Сжатие системных файлов (Compact OS)..." -ForegroundColor Gray
Compact.exe /CompactOS:always

Write-Host "  Готово." -ForegroundColor Green
#endregion

Write-Host ""
Write-Host "=============================================" -ForegroundColor Cyan
Write-Host "  Настройка завершена!" -ForegroundColor Cyan
Write-Host "  Рекомендуется перезагрузить компьютер." -ForegroundColor Yellow
Write-Host "=============================================" -ForegroundColor Cyan

# Конец скрипта

Пояснения и меры предосторожности

  • Скрипт безопасно применять на стандартной клиентской Windows 10/11. Он не удаляет критически важные компоненты (Microsoft Store, Калькулятор, Терминал) и не отключает службы, без которых система станет неработоспособной.
  • Служба WSearch (Windows Search) отключается; если поиск в меню «Пуск» и проводнике для вас критичен, закомментируйте или удалите эту строку из массива $servicesToDisable.
  • Перед запуском обязательно создайте точку восстановления системы (или полную резервную копию), как указано в статье.
  • Скрипт запускает команды sfc и DISM, которые могут потребовать подключение к интернету и занять длительное время. Если вы хотите пропустить восстановление образа, просто закомментируйте соответствующие строки.
  • Параметры провижининга приложений (Remove-AppxProvisionedPackage) затрагивают только новых пользователей; уже существующие профили останутся без изменений, кроме удалённых из текущего пользователя приложений.

Скопируйте содержимое в текстовый редактор (например, VS Code), сохраните как Win10-Baseline.ps1 и запустите из PowerShell с повышенными правами:

powershell

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process
.\Win10-Baseline.ps1
Итог

Использование PowerShell и командной строки в качестве программы настройки windows 10   это гибкий, прозрачный и безопасный способ привести систему к корпоративным стандартам. Все изменения задокументированы в виде скриптов, легко воспроизводятся и откатываются. Такой подход не требует установки сторонних твикеров, удовлетворяет политикам безопасности и работает на всех актуальных версиях Windows 10 и 11. Администратор, освоивший приведённые команды, получает полный контроль над системой и может за минуту развернуть готовое рабочее окружение на десятках машин.

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest
0 комментариев
Популярные
Новые Старые

0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x
Menu