❌ Об ошибках в журналах событий Windows
Помимо пристрастия к чистке реестра есть еще один тип виндовой озабоченности, хотя и менее распространенный. Это устранение ошибок из журналов событий. Читатель блога
Это не так работает. У журналов событий три основных применения:
🔹 Проверка работы конкретных процессов или компонентов, аудит и прочий превентивный мониторинг. Это больше свойственно организациям.
🔹 Изучение работы Windows. Выполнили какое-то действие - посмотрели, что записалось в журнал.
🔹 Устранение неполадок. Это самый распространенный сценарий. Однако здесь изначально должна быть какая-то проблема 👈 Далее вы используете журнал событий в качестве диагностического средства, чтобы выйти на причину проблемы. Примеры в канале: раз, два.
В многочисленных журналах регистрируются тысячи ошибок. В моей системе #PowerShell насчитал↓ 463 обычные и критические ошибки за последние 24 часа, треть из которых Windows провела во сне. Но многие по сути даже не являются ошибками!
Например, у меня практически каждая перезагрузка основной ОС сопровождается событием 100 с критической ошибкой. Система перезапускается в основном для установки обновлений. Поэтому длительность процесса выходит за рамки нормы. Ну и ладно, я вообще в это время сплю!
ℹ️ В базе знаний Microsoft описано немало безвредных ошибок, которые можно можно смело игнорировать. Вот некоторые примеры. Видимо, объем обращений по ним в поддержку вынудил продуктовые группы отразить это в документации.
Резюме: жизнь слишком коротка, чтобы пытаться устранить все ошибки в журналах событий Windows ✌️
Помимо пристрастия к чистке реестра есть еще один тип виндовой озабоченности, хотя и менее распространенный. Это устранение ошибок из журналов событий. Читатель блога
WhiteRabbit
попросил в почте разобраться с некой ошибкой, но даже с двух попыток не смог объяснить, в чем конкретно проблема. В смысле, проблемой он считал сам факт наличия ошибки в журнале 🙄Это не так работает. У журналов событий три основных применения:
🔹 Проверка работы конкретных процессов или компонентов, аудит и прочий превентивный мониторинг. Это больше свойственно организациям.
🔹 Изучение работы Windows. Выполнили какое-то действие - посмотрели, что записалось в журнал.
🔹 Устранение неполадок. Это самый распространенный сценарий. Однако здесь изначально должна быть какая-то проблема 👈 Далее вы используете журнал событий в качестве диагностического средства, чтобы выйти на причину проблемы. Примеры в канале: раз, два.
В многочисленных журналах регистрируются тысячи ошибок. В моей системе #PowerShell насчитал↓ 463 обычные и критические ошибки за последние 24 часа, треть из которых Windows провела во сне. Но многие по сути даже не являются ошибками!
Например, у меня практически каждая перезагрузка основной ОС сопровождается событием 100 с критической ошибкой. Система перезапускается в основном для установки обновлений. Поэтому длительность процесса выходит за рамки нормы. Ну и ладно, я вообще в это время сплю!
ℹ️ В базе знаний Microsoft описано немало безвредных ошибок, которые можно можно смело игнорировать. Вот некоторые примеры. Видимо, объем обращений по ним в поддержку вынудил продуктовые группы отразить это в документации.
Резюме: жизнь слишком коротка, чтобы пытаться устранить все ошибки в журналах событий Windows ✌️
🏃♂️ Запуск программ от имени администратора из диалога Run (Выполнить)
Вопрос из форума. Срыва покровов тут нет, но всегда найдутся те, кто не в курсе новинок 6- и 15-летней давности :)
👉
Разумеется, запрос UAC появится. Это #классика канала, см. здесь контекст и дополнительное ускорение. Жаль, что в адресную строку проводника это не прикрутили. Ведь там текущий путь передается в консоль.
ТС однако ответ не устроил, ибо не работает в 1607 🤦♂️ Что ж, можно и поглубже копнуть. Есть классика времен в Windows 7 - запуск из планировщика, причем без запроса UAC! Поскольку ссылка не у всех откроется где надо, скопирую суть сюда.
🕑 В планировщике создаётся задание:
И запускается:
Для этой команды можно сделать ярлык, закрепить на панели задач и/или повесить на него сочетание клавиш.
▶️ Вне диалога "Выполнить" для отдельных приложений запуск с полными правами можно форсировать так:
🔹 В свойствах EXE на вкладке "Совместимость" или в свойствах ярлыка - "Дополнительно" поставить флажок "Запускать от имени администратора".
🔹 Задействовать в #PowerShell командлет
Разумеется, для этой цели есть и другие встроенные способы (да хоть VBS с тем же глаголом), а также куча сторонних утилит.
#Классика блога в тему:
🔸 Как выполнять задачи с полными правами обычным пользователем без ввода пароля администратора
🔸 Как выполнять команды и скрипты от имени системы средствами Windows
🔸 Как выполнять скрипты с правами TrustedInstaller без сторонних утилит
Вопрос из форума. Срыва покровов тут нет, но всегда найдутся те, кто не в курсе новинок 6- и 15-летней давности :)
👉
Ctrl + Shift + Enter
!Разумеется, запрос UAC появится. Это #классика канала, см. здесь контекст и дополнительное ускорение. Жаль, что в адресную строку проводника это не прикрутили. Ведь там текущий путь передается в консоль.
ТС однако ответ не устроил, ибо не работает в 1607 🤦♂️ Что ж, можно и поглубже копнуть. Есть классика времен в Windows 7 - запуск из планировщика, причем без запроса UAC! Поскольку ссылка не у всех откроется где надо, скопирую суть сюда.
🕑 В планировщике создаётся задание:
schtasks /Create /RL Highest /TN Run /SC ONCE /ST 14:00 /TR "cmd.exe /c start %WINDIR%\SysWOW64\rundll32.exe shell32.dll,#61"
И запускается:
schtasks /run /tn Run
Для этой команды можно сделать ярлык, закрепить на панели задач и/или повесить на него сочетание клавиш.
▶️ Вне диалога "Выполнить" для отдельных приложений запуск с полными правами можно форсировать так:
🔹 В свойствах EXE на вкладке "Совместимость" или в свойствах ярлыка - "Дополнительно" поставить флажок "Запускать от имени администратора".
🔹 Задействовать в #PowerShell командлет
Start-Process
и его глагол RunAs
: powershell -ex bypass -command Start-Process notepad -Verb RunAs
Разумеется, для этой цели есть и другие встроенные способы (да хоть VBS с тем же глаголом), а также куча сторонних утилит.
#Классика блога в тему:
🔸 Как выполнять задачи с полными правами обычным пользователем без ввода пароля администратора
🔸 Как выполнять команды и скрипты от имени системы средствами Windows
🔸 Как выполнять скрипты с правами TrustedInstaller без сторонних утилит
▶️ Модуль PowerShell для winget
Сегодня в рубрике "Возвращаясь к напечатанному" модуль #PowerShell для менеджера пакетов winget. Разбирая нюансы автоматического обновления приложений осенью 2022 года, я сетовал на неудобство командной строки. Потому что парсинг текста заведомо проигрывает управлению объектами в PowerShell.
Полгода спустя вышла альфа-версия официального модуля, и он продолжает развиваться. К сожалению, это не полноценный модуль, а обертка над утилитой winget 🤷♂️ Командлетов пока маловато, и до полного набора возможностей еще далеко. Но уж чем богаты...
📄 Основы
Рекомендуется использовать PowerShell Core нежели входящий в ОС PowerShell 5.1.
Заметьте, что вопреки общепринятой практике здесь не требуется указывать подстановочный символ
☑️ Работа со списком пакетов
🔁 Выборочное обновление пакетов
Это альтернатива команде
Результат этого скрипта на картинке↓ Кстати, начиная с версии 1.20 установленный из магазина Terminal не должен обновляться, если запущен. Было много жалоб - например, убиваются удаленные сессии.
В общем, с этим модулем можно работать в каких-то сценариях. Разумеется, хотелось бы большего охвата нативных функций - например, команды
Сегодня в рубрике "Возвращаясь к напечатанному" модуль #PowerShell для менеджера пакетов winget. Разбирая нюансы автоматического обновления приложений осенью 2022 года, я сетовал на неудобство командной строки. Потому что парсинг текста заведомо проигрывает управлению объектами в PowerShell.
Полгода спустя вышла альфа-версия официального модуля, и он продолжает развиваться. К сожалению, это не полноценный модуль, а обертка над утилитой winget 🤷♂️ Командлетов пока маловато, и до полного набора возможностей еще далеко. Но уж чем богаты...
📄 Основы
Рекомендуется использовать PowerShell Core нежели входящий в ОС PowerShell 5.1.
# установить модуль winget
Install-Module -Name Microsoft.WinGet.Client
# найти пакет в репозиториях по частичному имени
Find-WinGetPackage -Name 'Bitvise SSH'
Заметьте, что вопреки общепринятой практике здесь не требуется указывать подстановочный символ
*
. Наоборот с ним ничего не найдется. Одинарные кавычки необходимы при наличии пробелов в имени.# найти пакет только в репо магазина
Find-WinGetPackage -Name treesize -Source msstore
# обновить все пакеты IrfanView (приложения, плагины)
Get-WinGetPackage -Name irfanview | Update-WinGetPackage
☑️ Работа со списком пакетов
# список всех установленных пакетов
$p = Get-WinGetPackage
# список пакетов с доступными обновлениями
$p | where IsUpdateAvailable
# список пакетов с доступными обновлениями из магазина
$p | where IsUpdateAvailable | where Source -eq msstore
# список пакетов в виде интерактивной таблицы
$p | Out-GridView
# список пакетов в CSV
$p | ConvertTo-CSV | Out-File -Path C:\temp\winget.csv
🔁 Выборочное обновление пакетов
# обновить все пакеты при наличии новой версии, кроме указанных
$p | where IsUpdateAvailable | where Name -notmatch 'calibre|zoom'
| Update-WinGetPackage
Это альтернатива команде
pin
, которую я недавно разбирал в канале.# Обновить все, кроме терминала, если он запущен
$u = Get-WinGetPackage | where IsUpdateAvailable
if (Get-Process -ProcessName WindowsTerminal) {
$u | where id -notmatch 'WindowsTerminal' |
ForEach-Object {Update-WinGetPackage -id $_.Id}
}
else {
$u | ForEach-Object {Update-WinGetPackage -id $_.Id}
}
Результат этого скрипта на картинке↓ Кстати, начиная с версии 1.20 установленный из магазина Terminal не должен обновляться, если запущен. Было много жалоб - например, убиваются удаленные сессии.
В общем, с этим модулем можно работать в каких-то сценариях. Разумеется, хотелось бы большего охвата нативных функций - например, команды
show
. Надеюсь, в будущем мы это увидим ✌️💡 О каких фишках Windows и ПО Microsoft вы жалеете, что не узнали пораньше?
Я достаточно давно ковыряюсь в Windows, слежу за темой, поэтому меня трудно удивить. Бывает, нахожу новые фичи, о которых успел забыть! Иногда даже обнаруживаю их упоминания в своем блоге :)
Поэтому свой топ-3 я составил не без труда.
🥇 В MS Office двойной щелчок по значку "Формат по образцу" позволяет применять его многократно. Да, я достаточно долго тыкал в кнопку каждый раз 🤷♂️
🥈 В диалоговом окне "Открыть" в поле "Имя файла" можно вставлять скопированный файл по
🥉
А это топ-3 реакций коллег по работе на мои советы.
1️⃣ История буфера обмена в Windows -
2️⃣ Вертикальные вкладки браузера - например, в Edge. Когда у вас несколько вложенных сессий RDP, их панели вверху экрана либо постоянно перекрывают вкладки браузера, либо выезжают в ненужный момент. Перемещение вкладок вбок отлично решает эту проблему.
3️⃣ Скрипты #PowerShell. Даже простой однострочник может творить чудеса. Дзен наступает, когда скрипт выполняет за 10 секунд работу, на которую раньше уходило полчаса. Иногда достаточно просто показать человеку путь на конкретном примере.
📢 В обсуждении поделитесь топом своих открытий! Не удивлюсь, если о каких-то вы узнали из моих публикаций ;)
Я достаточно давно ковыряюсь в Windows, слежу за темой, поэтому меня трудно удивить. Бывает, нахожу новые фичи, о которых успел забыть! Иногда даже обнаруживаю их упоминания в своем блоге :)
Поэтому свой топ-3 я составил не без труда.
🥇 В MS Office двойной щелчок по значку "Формат по образцу" позволяет применять его многократно. Да, я достаточно долго тыкал в кнопку каждый раз 🤷♂️
🥈 В диалоговом окне "Открыть" в поле "Имя файла" можно вставлять скопированный файл по
Ctrl+V
, и туда вставится его путь! Зачастую в файловом менеджере папка с файлом уже открыта или до него проще добраться, чем из диалогового окна. Я регулярно заливаю файлы в интернет таким способом, видео ⬇️ С файлами из интернета тоже работает! 🥉
Ctrl+Z
может работать даже там, где не указано явно. Например, в проводнике возвращает на место удаленный файл. Надо пробовать!А это топ-3 реакций коллег по работе на мои советы.
1️⃣ История буфера обмена в Windows -
Win+V
. Да, он в подметки не годится продвинутыми менеджерам вроде Charu или Ditto. Но даже это в разы лучше чем ничего.2️⃣ Вертикальные вкладки браузера - например, в Edge. Когда у вас несколько вложенных сессий RDP, их панели вверху экрана либо постоянно перекрывают вкладки браузера, либо выезжают в ненужный момент. Перемещение вкладок вбок отлично решает эту проблему.
3️⃣ Скрипты #PowerShell. Даже простой однострочник может творить чудеса. Дзен наступает, когда скрипт выполняет за 10 секунд работу, на которую раньше уходило полчаса. Иногда достаточно просто показать человеку путь на конкретном примере.
📢 В обсуждении поделитесь топом своих открытий! Не удивлюсь, если о каких-то вы узнали из моих публикаций ;)
⚙️ О подходах к диагностике - простых и сложных
Однажды я обнаружил, что у меня не работает магазин Windows: вместо содержимого - ошибки. Я очень редко открываю его, поэтому не знал, в какой момент возникла проблема. Но я ничего не менял у себя очень давно. Вместо диагностики я просто установил нужное приложение с помощью winget и пошел дальше.
Спустя какое-то время у меня возник ворох проблем, вызванных сбоем файловой системы. Решил их я следуя своему же любимому совету - переустановил систему поверх 🔃 Однако Магазин это не починило, что намекало на несистемную природу неполадок.
🌐 С сетью у меня было все ок. Я подключился к двум разным VPN, но ничего не изменилось. Oткрыл консоль и сделал сброс магазина, а затем полностью переустановил его. Не помогло. Тогда я зашёл в чистый аккаунт, и в нем такой проблемы не было. Значит, что-то с моим профилем 💯
Чтобы исключить влияние внешних факторов, я убрал все из автозагрузки и наконец перезагрузился. Магазин заработал! И только тут я связал сообщение о проблемах с сетью с установленным у меня клиентом прокси-сервера (SOCKS5). Разумеется, он стоял в автозапуске. Действительно, без прокси магазин заработал! 🎉
👉 7 лет назад я опубликовал тут пост "Простой прием диагностики Windows, о котором не надо забывать". Речь шла о загрузке в безопасный режим. Как и в тот раз, об этом приеме я сейчас успешно забыл :) Но в итоге фактически пришел к нему, потому что в безопасном режиме автозагрузка тоже не работает. Также, ее отключение - это часть режима "чистой загрузки" в терминологии Microsoft, см. KB929135.
////
ℹ️ На практике множество проблем в Windows легко решается простой двухходовкой:
1. Безопасный режим.
2. Если в нем воспроизводится - переустановка поверх, иначе - поиск проблемной программы или службы.
⏹ Но этому часто мешают разные факторы:
- нежелание перезагружаться
- знание, что "ничего не делал" смещает фокус диагностики - я чинил магазин, хотя проблема решалась в прокси
- переоценка своих навыков - я знаю #PowerShell и еще много страшных слов :)
- или наоборот недооценка знаний, которая сходу ведет в гуглояндекс, где на бестолковых и "сеошных" советах можно потерять кучу времени
В результате вместо простой диагностики получается квест из сложной 🤷♂️
В чате Артём Федотов заметил, что переустановка поверх не повышает уровень знаний, потому что остается невыясненной причинa проблемы. Это правда.
Однако не всегда нужно и целесообразно ее выяснять. Да и не факт, что понимание причины как-то повысит уровень знаний. Ок, узнал я, что проблема в прокси-сервере. Так у меня и раньше с ним внезапно отваливались сервисы Microsoft из-за изменений на их серверной стороне - то не работала Кортана, то блокировался русский голосовой ввод. Решение - тема для отдельного разговора.
В общем, я не имею ничего против сложных методов диагностики. Главное - не забывать о простых ✌️
Однажды я обнаружил, что у меня не работает магазин Windows: вместо содержимого - ошибки. Я очень редко открываю его, поэтому не знал, в какой момент возникла проблема. Но я ничего не менял у себя очень давно. Вместо диагностики я просто установил нужное приложение с помощью winget и пошел дальше.
Спустя какое-то время у меня возник ворох проблем, вызванных сбоем файловой системы. Решил их я следуя своему же любимому совету - переустановил систему поверх 🔃 Однако Магазин это не починило, что намекало на несистемную природу неполадок.
🌐 С сетью у меня было все ок. Я подключился к двум разным VPN, но ничего не изменилось. Oткрыл консоль и сделал сброс магазина, а затем полностью переустановил его. Не помогло. Тогда я зашёл в чистый аккаунт, и в нем такой проблемы не было. Значит, что-то с моим профилем 💯
Чтобы исключить влияние внешних факторов, я убрал все из автозагрузки и наконец перезагрузился. Магазин заработал! И только тут я связал сообщение о проблемах с сетью с установленным у меня клиентом прокси-сервера (SOCKS5). Разумеется, он стоял в автозапуске. Действительно, без прокси магазин заработал! 🎉
👉 7 лет назад я опубликовал тут пост "Простой прием диагностики Windows, о котором не надо забывать". Речь шла о загрузке в безопасный режим. Как и в тот раз, об этом приеме я сейчас успешно забыл :) Но в итоге фактически пришел к нему, потому что в безопасном режиме автозагрузка тоже не работает. Также, ее отключение - это часть режима "чистой загрузки" в терминологии Microsoft, см. KB929135.
////
ℹ️ На практике множество проблем в Windows легко решается простой двухходовкой:
1. Безопасный режим.
2. Если в нем воспроизводится - переустановка поверх, иначе - поиск проблемной программы или службы.
⏹ Но этому часто мешают разные факторы:
- нежелание перезагружаться
- знание, что "ничего не делал" смещает фокус диагностики - я чинил магазин, хотя проблема решалась в прокси
- переоценка своих навыков - я знаю #PowerShell и еще много страшных слов :)
- или наоборот недооценка знаний, которая сходу ведет в гуглояндекс, где на бестолковых и "сеошных" советах можно потерять кучу времени
В результате вместо простой диагностики получается квест из сложной 🤷♂️
В чате Артём Федотов заметил, что переустановка поверх не повышает уровень знаний, потому что остается невыясненной причинa проблемы. Это правда.
Однако не всегда нужно и целесообразно ее выяснять. Да и не факт, что понимание причины как-то повысит уровень знаний. Ок, узнал я, что проблема в прокси-сервере. Так у меня и раньше с ним внезапно отваливались сервисы Microsoft из-за изменений на их серверной стороне - то не работала Кортана, то блокировался русский голосовой ввод. Решение - тема для отдельного разговора.
В общем, я не имею ничего против сложных методов диагностики. Главное - не забывать о простых ✌️
⬇️ winget: быстрая установка своего набора программ на чистой системе
Недавно я рассказывал в блоге, как прицепить установку программ с winget к автоустановке Windows. (А заодно как установить winget в Windows Server и изданиях LTSC :) В статье был скрипт с ручной подборкой приложений для winget. Создание такого набора можно существенно автоматизировать!
👉 У winget есть команды
В настроенной системе эта команда сохранит json со списком программ в текущую папку:
В чистой системе эта команда установит приложения из списка:
🤺 Теперь нюансы.
🔹 В список попадут только приложения, доступные в подключенных репозиториях. По умолчанию - это winget и msstore (репо магазина Windows).
🔹 Вы можете убрать ненужные приложения, открыв json в текстовом редакторе. По умолчанию winget пытается обновить приложения до новой версии. Если ее нет, он ничего не делает. Поэтому не тратьте время на удаление из списка предустановленных приложений и компонентов вроде "Microsoft.Edge" и "Microsoft.UI.Xaml.2.8".
🔹 Файл структурирован по репозиториям. Для экспорта конкретного репо есть ключ
Вместо открытия веб-версии магазина вы можете вывести названия с помощью модуля PowerShell (последняя строка).
🔹 Вы можете добавить в список прочие приложения, посмотрев их ИД командной
Разумеется, добавлять ИД нужно в раздел соответствующего репо, иначе при установке программа не найдется.
🔹 В список не попадут приложения, которые были установлены из образа вместе с системой (winget сообщает о каждом в процессе экспорта). Причем даже с помощью 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
призваны ускорить создание привычной среды на чистой системе. И они неплохо с этим справляются! Да, не все программы есть в репозиториях, а перенос настроек приложений - отдельная большая тема. Но грех жаловаться на возможность одной командой установить несколько десятков любимых программ ✌️www.outsidethebox.ms
Автоустановка приложений с winget по окончании установки Windows
WinGet - замечательное средство автоматической установки приложений. Не надо тратить время на скачивание актуальных инсталляторов и забивать себе голову тонкостями ключей тихой установки. Просто запускаешь скрипт с подборкой своих программ и готово! Но есть…
▶️ Windows Terminal: перемещение курсора мышью и фрагменты кода
Хочу рассказать вам о паре новых возможностей терминала.
🖱 Перемещение курсора мышью
Нередко бывает, что надо изменить длинную команду. И чтобы перейти в нужное место, приходится давить ⬅️ или ➡️ либо нажимать их, удерживая
Казалось бы, перемещая руку от клавиатуры к мыши и обратно, ничего особо не ускоришь. Но по моим ощущениям иногда действительно быстрее просто ткнуть мышью в нужную позицию строки 🚀
Этой фичей я уже пользуюсь несколько месяцев в превью терминала, а вчера она стала доступна в стабильной версии. Настраивается для профилей в дополнительных параметрах. Можно включить это поведение для отдельных профилей или сразу для всех (Defaults). Разумеется, у ненужных профилей можно отключить.
Но есть нюанс © Функция экспериментальная, и работает она только в оболочках которые её поддерживают. Например, это PowerShell Core, но не Windows #PowerShell, идущий в комплекте с ОС.
#️⃣ Фрагменты кода (code snippets)
Это только что появилось в превью терминала (я попробовал еще в Canary). Можно сохранять команды и даже небольшие скрипты. И быстро запускать их!
🎦 Демо от ПМа терминала.
По сути осуществляется ввод символов, прописанных в настройках (JSON-файл). В раздел
В этом примере последовательно пингуются два ресурса (
Сейчас для вызова повторных команд в моем арсенале поиск по истории (
Попробуйте эти фичи и поделитесь впечатлениями в чате! ✌️
Хочу рассказать вам о паре новых возможностей терминала.
🖱 Перемещение курсора мышью
Нередко бывает, что надо изменить длинную команду. И чтобы перейти в нужное место, приходится давить ⬅️ или ➡️ либо нажимать их, удерживая
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). Однако оба способа нередко "замусориваются" вариациями одной команды. Плюс можно выполнять фрагмент заданным сочетанием клавиш. Поэтому я уже вижу применение фрагментам кода!Попробуйте эти фичи и поделитесь впечатлениями в чате! ✌️
⚙️ Как быстро восстановить разрешения на файл или папку
Недавно в чат поддержки пришел человек, который собственноручно сломал разрешения файла
Зато у меня появился повод показать один из моих любимых примеров мощи конвейеров в #PowerShell. От имени администратора:
В оригинале была одна команда, но так нагляднее. Перейдя в папку с файлами, берем список контроля доступа (ACL) у соседнего файла
ℹ️ Параметр
Проблему автора вопроса это решило, но ничему не научило. Уже через 5 минут он спросил, как изменить владельца родительской папки
Вообще, правка разрешений нужна крайне редко. А для внесения изменений в файлы или реестр она фактически не требуется. На такой случай у меня есть отличная #классика блога с быстрым и грамотным способом выполнения операций с правами SYSTEM и TrustedInstaller ✌️
Недавно в чат поддержки пришел человек, который собственноручно сломал разрешения файла
hosts
. Он творил полную дичь - пытался сделать этот файл только для чтения, чтобы не слетел некий кряк 🤦♂️Зато у меня появился повод показать один из моих любимых примеров мощи конвейеров в #PowerShell. От имени администратора:
cd C:\Windows\System32\drivers\etc
Get-Acl networks | Set-Acl hosts
В оригинале была одна команда, но так нагляднее. Перейдя в папку с файлами, берем список контроля доступа (ACL) у соседнего файла
networks
и применяем его к поврежденному hosts
. Это всё! Восстанавливаются разрешения на объект файловой системы и его владелец.ℹ️ Параметр
-Path
для пути к файлу я опустил. У этих командлетов он первый позиционный, т.е. подразумевается, если не указан. Такие вещи описаны в справке.Проблему автора вопроса это решило, но ничему не научило. Уже через 5 минут он спросил, как изменить владельца родительской папки
etc
. Потому что не получалось сохранить измененный файл hosts
🤦♂️🤦♂️ В его инструкциях же не уточнялось, что текстовый редактор надо запускать от админа...Вообще, правка разрешений нужна крайне редко. А для внесения изменений в файлы или реестр она фактически не требуется. На такой случай у меня есть отличная #классика блога с быстрым и грамотным способом выполнения операций с правами SYSTEM и TrustedInstaller ✌️
🤷♂️ Владельцы локализованных Windows должны страдать
Особенно те, кто устанавливают систему с локализованного дистрибутива, нежели накатывает языковой пакет поверх оригинальной английской системы. Ну, может, и не должны, но регулярно страдают :)
Этот тезис получил очередное подтверждение на прошлой неделе. Множество пользователей VMWare Workstation из разных стран не смогли установить новую версию. Всех их объединяло наличие локализованной системы.
Методом тыка страдальцы выяснили: установка проходит на ура, если создать в системе две группы с латинскими названиями -
Видимо, установщик просто проверял наличие этих групп по именам. Но такие имена будут только при установке с английского дистрибутива! А вот дальнейшая установка языкового пакета на имена групп уже не повлияет 👌
///
По совпадению я недавно разбирал похожую ситуацию на работе. Нас мигрируют в огороженную среду с правами обычного пользователя, поэтому повылезало много проблем с установкой бизнес-приложений. Детали опущу, но вкратце - некоторые программы легко ставятся мимо Program Files и нормально работают дальше. Прочие же этому противятся, причем нетрадиционными способами 🌈
Нормальные разработчики уже лет дцать используют манифест установщика. И если там указано
Первый батник сходу проверял наличие прав администратора, а при успехе вызывал другие файлы, устанавливающие службу и прочие штуки. Для проверки он искал в выводе команды
Сравните самостоятельно результат выполнения команды в консоли с правами обычного пользователя и администратора. Искомая строка будет только во втором случае, потому что процесс имеет высокий уровень целостности. У классических приложений обычного пользователя он средний (Medium).
🪲 Казалось бы, цель достигнута. Однако вывод команды локализован! Поэтому в русской или итальянской Windows вы с любыми правами такого не увидите. И соответственно вообще не сможете установить приложение этим инсталлятором.
Я предложил инженеру QA занести на это дефект, но он махнул рукой. Видимо, клиентская база использует исключительно английские ОС. Так-то даже на уровне батников можно было решить вне зависимости от языка. Например, такой костыль #PowerShell вызовет из одного батника другой с правами админа.
Глагол
////
Я исторически использую Windows на английском языке, поэтому подобные проблемы мне не грозят. Если для вас такое невыносимо, хотя бы ставьте английский дистрибутив и накатывайте родной языковой пакет. Иначе - не забывайтетак страдать ✌️
Особенно те, кто устанавливают систему с локализованного дистрибутива, нежели накатывает языковой пакет поверх оригинальной английской системы. Ну, может, и не должны, но регулярно страдают :)
Этот тезис получил очередное подтверждение на прошлой неделе. Множество пользователей VMWare Workstation из разных стран не смогли установить новую версию. Всех их объединяло наличие локализованной системы.
An error occurred while applying security settings. Authenticated Users is not a valid user or group.
Методом тыка страдальцы выяснили: установка проходит на ура, если создать в системе две группы с латинскими названиями -
Authenticated Users
и Users
. Причем членство в этих группах не требуется.Видимо, установщик просто проверял наличие этих групп по именам. Но такие имена будут только при установке с английского дистрибутива! А вот дальнейшая установка языкового пакета на имена групп уже не повлияет 👌
///
По совпадению я недавно разбирал похожую ситуацию на работе. Нас мигрируют в огороженную среду с правами обычного пользователя, поэтому повылезало много проблем с установкой бизнес-приложений. Детали опущу, но вкратце - некоторые программы легко ставятся мимо Program Files и нормально работают дальше. Прочие же этому противятся, причем нетрадиционными способами 🌈
Нормальные разработчики уже лет дцать используют манифест установщика. И если там указано
requireAdministrator
, он будет запускаться только с правами администратора. А тут некое приложение с бородатых времен поставляется в самораспаковывающемся CAB-архиве. Я извлек содержимое командой expand и увидел несколько батников.Первый батник сходу проверял наличие прав администратора, а при успехе вызывал другие файлы, устанавливающие службу и прочие штуки. Для проверки он искал в выводе команды
whoami /groups
строку Mandatory Label\High Mandatory Level
🤦♂️Сравните самостоятельно результат выполнения команды в консоли с правами обычного пользователя и администратора. Искомая строка будет только во втором случае, потому что процесс имеет высокий уровень целостности. У классических приложений обычного пользователя он средний (Medium).
🪲 Казалось бы, цель достигнута. Однако вывод команды локализован! Поэтому в русской или итальянской Windows вы с любыми правами такого не увидите. И соответственно вообще не сможете установить приложение этим инсталлятором.
Я предложил инженеру QA занести на это дефект, но он махнул рукой. Видимо, клиентская база использует исключительно английские ОС. Так-то даже на уровне батников можно было решить вне зависимости от языка. Например, такой костыль #PowerShell вызовет из одного батника другой с правами админа.
powershell -command "Start-Process -FilePath '%~dp0batch2.cmd' -Verb RunAs"
Глагол
RunAs
недавно был в канале. Я также показывал управление локальными пользователями и группами вне зависимости от языка ОС.////
Я исторически использую Windows на английском языке, поэтому подобные проблемы мне не грозят. Если для вас такое невыносимо, хотя бы ставьте английский дистрибутив и накатывайте родной языковой пакет. Иначе - не забывайте
🆕 Что нового в Windows 11 24H2 для ИТ-специалистов и разработчиков
Для начала всем интересующимся Windows рекомендую большие подборки Community (RU) и Winaero (EN).
ℹ️ Для ИТ-специалистов у Microsoft есть статья What's new in Windows 11, version 24H2 с ценным упоминанием о новой иконке диспетчера задач и эффекте Mica в его настройках :) Отмечу многочисленные изменения в SMB и LAPS, а также новинку - Personal Data Encryption (PDE). Это корпоративное шифрование пользовательских папок на уровне файлов под крылом Windows Hello и под управлением Intune.
Для разработчиков я нашел изменения в:
• API электропитания в той же статье для IТ Pro
• доступе к Wi-Fi и местоположению
• разработке драйверов
В остальном Microsoft делает упор на ИИ - NLP, OCR, живые субтитры, Recall.
////
Помимо списка ссылок расскажу про два заинтересовавших меня нововведения в 24H2.
🔁 Чекпойнты накопительных обновлений
Первый выпуск Windows 11 привнес ряд заметных улучшений в накопительные обновления. В 24H2 процесс эволюционировал. До сих пор при доставке обновлений дельта вычислялась относительно состояния компонентов в [условном] RTM.
Теперь некоторые накопительные обновления служат контрольными точками - чекпойнтами, и дельта вычисляется уже относительно них. Тем самым уменьшается размер ежемесячных обновлений и экономится место на диске, а установка проходит быстрее.
Сокращение размера обновлений будет наиболее заметным в сценарии, когда новая версия ОС доставляется постепенно в рамках накопительных обновлений и включается тумблером. Так было с Windows 11 23H2 и Windows 10 многократно. Теперь #тумблер будут выпускать наряду с чекпойнтом. Он и станет базой для следующих накопительных обновлений, нежели прошлогодний RTM.
Подробнее в блоге IT Pro 📃
▶️ Sudo для Windows
Тут пошли по стопам Linux. Если выполнить с обычными правами, например:
Включив sudo в настройках разработчика в Параметрах, можно в той же консоли добавить
Подробнее о параметрах sudo для Windows в документации 📃
Запрос UAC придется одобрять каждый раз. В этом заметное отличие UX от Linux, где после ввода пароля его не просят для sudo на протяжении N минут (настраивается) 🐧
Кэш учетных данных есть в gsudo, которая также может повышать команды #PowerShell. Нативная утилита sudo этого не умеет, но у меня есть #классика блога: sudo и resudo в PowerShell ✌️
Для начала всем интересующимся Windows рекомендую большие подборки Community (RU) и Winaero (EN).
ℹ️ Для ИТ-специалистов у Microsoft есть статья What's new in Windows 11, version 24H2 с ценным упоминанием о новой иконке диспетчера задач и эффекте Mica в его настройках :) Отмечу многочисленные изменения в SMB и LAPS, а также новинку - Personal Data Encryption (PDE). Это корпоративное шифрование пользовательских папок на уровне файлов под крылом Windows Hello и под управлением Intune.
Для разработчиков я нашел изменения в:
• API электропитания в той же статье для IТ Pro
• доступе к Wi-Fi и местоположению
• разработке драйверов
В остальном Microsoft делает упор на ИИ - NLP, OCR, живые субтитры, Recall.
////
Помимо списка ссылок расскажу про два заинтересовавших меня нововведения в 24H2.
🔁 Чекпойнты накопительных обновлений
Первый выпуск Windows 11 привнес ряд заметных улучшений в накопительные обновления. В 24H2 процесс эволюционировал. До сих пор при доставке обновлений дельта вычислялась относительно состояния компонентов в [условном] RTM.
Теперь некоторые накопительные обновления служат контрольными точками - чекпойнтами, и дельта вычисляется уже относительно них. Тем самым уменьшается размер ежемесячных обновлений и экономится место на диске, а установка проходит быстрее.
Сокращение размера обновлений будет наиболее заметным в сценарии, когда новая версия ОС доставляется постепенно в рамках накопительных обновлений и включается тумблером. Так было с Windows 11 23H2 и Windows 10 многократно. Теперь #тумблер будут выпускать наряду с чекпойнтом. Он и станет базой для следующих накопительных обновлений, нежели прошлогодний RTM.
Подробнее в блоге IT Pro 📃
▶️ Sudo для Windows
Тут пошли по стопам Linux. Если выполнить с обычными правами, например:
fsutil fsinfo ntfsinfo C:
, будет ошибка из-за недостатка прав. Придется перезапускать консоль с полными правами. Включив sudo в настройках разработчика в Параметрах, можно в той же консоли добавить
sudo
к команде: sudo fsutil fsinfo ntfsinfo C:
, одобрить запрос UAC и получить результат!Подробнее о параметрах sudo для Windows в документации 📃
Запрос UAC придется одобрять каждый раз. В этом заметное отличие UX от Linux, где после ввода пароля его не просят для sudo на протяжении N минут (настраивается) 🐧
Кэш учетных данных есть в gsudo, которая также может повышать команды #PowerShell. Нативная утилита sudo этого не умеет, но у меня есть #классика блога: sudo и resudo в PowerShell ✌️