Windows 11, 10, etc - Вадим Стеркин
14.7K subscribers
281 photos
6 videos
8 files
1.1K links
Авторский канал. Windows, безопасность, мобильный мир:
• тайное знание
• мощный ликбез
• гадание по логам
• срыв покровов
• доставка пруфов

Чат: @winsiders
Блог: outsidethebox.ms
ЛС: @vsterkin
Донаты ₽: boosty.to/sterkin
РКН: https://clck.ru/3LBugC
Download Telegram
⬇️ winget: быстрая установка своего набора программ на чистой системе

Недавно я рассказывал в блоге, как прицепить установку программ с winget к автоустановке Windows. (А заодно как установить winget в Windows Server и изданиях LTSC :) В статье был скрипт с ручной подборкой приложений для winget. Создание такого набора можно существенно автоматизировать!

👉 У winget есть команды export и import.

В настроенной системе эта команда сохранит json со списком программ в текущую папку:
winget export -o apps.json


В чистой системе эта команда установит приложения из списка:
winget import C:\temp\apps.json --ignore-unavailable --accept-package-agreements --accept-source-agreements


🤺 Теперь нюансы.

🔹 В список попадут только приложения, доступные в подключенных репозиториях. По умолчанию - это winget и msstore (репо магазина Windows).

🔹 Вы можете убрать ненужные приложения, открыв json в текстовом редакторе. По умолчанию winget пытается обновить приложения до новой версии. Если ее нет, он ничего не делает. Поэтому не тратьте время на удаление из списка предустановленных приложений и компонентов вроде "Microsoft.Edge" и "Microsoft.UI.Xaml.2.8".

🔹 Файл структурирован по репозиториям. Для экспорта конкретного репо есть ключ -s: -s msstore. К сожалению, в этом репо по идентификатору вида 9N8G7TSCL18R невозможно определить приложение. Можно подставить ИД в ссылку на веб-версию магазина или пройтись по json скриптом #PowerShell:

$json = Get-Content -Path "apps.json" -Raw | ConvertFrom-Json
$msstore = $json.Sources | Where-Object {$_.SourceDetails.Name -eq "msstore"} |
ForEach-Object {$_.Packages.PackageIdentifier}
$msstore | ForEach-Object {explorer https://apps.microsoft.com/store/detail/$($_); sleep 1}
# $msstore | ForEach-Object {Get-WinGetPackage -Id $_ -MatchOption Equals} | ft ID,Name -Wrap


Вместо открытия веб-версии магазина вы можете вывести названия с помощью модуля PowerShell (последняя строка).

🔹 Вы можете добавить в список прочие приложения, посмотрев их ИД командной search:
winget search nanazip

Разумеется, добавлять ИД нужно в раздел соответствующего репо, иначе при установке программа не найдется.

🔹 В список не попадут приложения, которые были установлены из образа вместе с системой (winget сообщает о каждом в процессе экспорта). Причем даже с помощью winget нельзя просто взять и получить список их магазинных ИД. Да и не все они доступны в репо магазина. Поэтому команда search в помощь.

✔️ Резюме
Команды import и export призваны ускорить создание привычной среды на чистой системе. И они неплохо с этим справляются! Да, не все программы есть в репозиториях, а перенос настроек приложений - отдельная большая тема. Но грех жаловаться на возможность одной командой установить несколько десятков любимых программ ✌️
▶️ Windows Terminal: перемещение курсора мышью и фрагменты кода

Хочу рассказать вам о паре новых возможностей терминала.

🖱 Перемещение курсора мышью

Нередко бывает, что надо изменить длинную команду. И чтобы перейти в нужное место, приходится давить ⬅️ или ➡️ либо нажимать их, удерживая Ctrl, что быстрее.

Казалось бы, перемещая руку от клавиатуры к мыши и обратно, ничего особо не ускоришь. Но по моим ощущениям иногда действительно быстрее просто ткнуть мышью в нужную позицию строки 🚀

Этой фичей я уже пользуюсь несколько месяцев в превью терминала, а вчера она стала доступна в стабильной версии. Настраивается для профилей в дополнительных параметрах. Можно включить это поведение для отдельных профилей или сразу для всех (Defaults). Разумеется, у ненужных профилей можно отключить.

Но есть нюанс © Функция экспериментальная, и работает она только в оболочках которые её поддерживают. Например, это PowerShell Core, но не Windows #PowerShell, идущий в комплекте с ОС.

#️⃣ Фрагменты кода (code snippets)

Это только что появилось в превью терминала (я попробовал еще в Canary). Можно сохранять команды и даже небольшие скрипты. И быстро запускать их!

🎦 Демо от ПМа терминала.

По сути осуществляется ввод символов, прописанных в настройках (JSON-файл). В раздел actions добавляйте действие Send Input с нужным фрагментом.

{ "command": 
{
"action": "sendInput",
"input": "ping 1.1.1.1\r ping colts.com\r"
},
"name": "Demo ping",
"keys": "ctrl+alt+p"
}


В этом примере последовательно пингуются два ресурса (\r эмулирует нажатие клавиши Enter).

Сейчас для вызова повторных команд в моем арсенале поиск по истории (Ctrl+R) и Predictive IntelliSense (п. 3, фича модуля PSReadLine). Однако оба способа нередко "замусориваются" вариациями одной команды. Плюс можно выполнять фрагмент заданным сочетанием клавиш. Поэтому я уже вижу применение фрагментам кода!

Попробуйте эти фичи и поделитесь впечатлениями в чате! ✌️