Терминальный режим windows 10: Терминальный сервер на Windows 10

Содержание

Invoke-WebRequest: Отправка HTTP запросов, загрузка файлов и обработка HTML веб-страниц в PowerShell

Командлет Invoke-WebRequest можно использовать для обращения к HTTP/HTTPS/FTP ресурсам прямо из консоли PowerShell. С помощью этой команды вы можете отправить HTTP запросы, скачивать файлы с любых веб-сайтов, парсить HTML веб-страницы, заполнять и отправлять веб-формы. В этой статье мы рассмотрим несколько базовых примеров использования командлета Invoke-WebRequest для работы с веб-сервисами.

Содержание:

  • Получить содержимое веб-страницы с помощью командлета Invoke-WebRequest
  • Использование Invoke-WebRequest с аутентификацией
  • Парсинг HTML страниц с помощью Powershell
  • Как скачать файл по HTTP с помощью PowerShell?
  • Заполнение и отправка веб-форм на Powershell
  • Invoke-WebRequest: игнорировать проверку SSL/TLS сертификатов

Получить содержимое веб-страницы с помощью командлета Invoke-WebRequest

Командлет Invoke-WebRequest доступен в Windows начиная с версии PowerShell 3. 0. Командлет Invoke-WebRequest позволяет отправить HTTP запрос с методом GET к указанной веб странице и получить ответ от севера.

В Windows есть два алиаса для команды Invoke-WebRequest:
iwk
и
wget
.

Выполните следующую команду:

Invoke-WebRequest -Uri "https://winitpro.ru"

Совет. Если вы подключены к Интернет через прокси-сервер, нужно правильно настроить PowerShell для доступа через прокси-сервер.

Команда загрузила страницу и отобразила ее содержимое в консоли PowerShell. Возвращенный ответ представляет собой не просто HTML код страницы. Командлет Invoke-WebRequest возвращает объект типа HtmlWebResponseObject. Такой объект представляет собой набор коллекции форм, ссылок, изображений и других важных элементов HTML документа. Посмотрим все свойства данного объекта:

$WebResponseObj = Invoke-WebRequest -Uri "https://winitpro.ru"
$WebResponseObj| Get-Member

Чтобы получить сырой HTML код веб страницы, который содержится в данном объекте, выполните:

$WebResponseObj. content

Вы можете вывести HTML код страницы вместе с HTTP заголовками, которые вернул веб сервер:

$WebResponseObj.rawcontent

Можно получить только код ответа веб-сервера и HTTP заголовки HTML страницы:

$WebResponseObj.StatusCode

$WebResponseObj.Headers

Как вы видите, веб сервер вернул ответ 200, т.е. запрос выполнен успешно и веб сервер доступен и работает корректно.

Key                       Value
---                       -----
Transfer-Encoding         chunked
Connection                keep-alive
Vary                      Accept-Encoding,Cookie
Strict-Transport-Security max-age=31536000;
Cache-Control             max-age=3, must-revalidate
Content-Type              text/html; charset=UTF-8
Date                      Mon, 11 Jul 2022 08:18:05 GMT
Server                    nginx/1.20.2
X-Powered-By              PHP/5.6.40

Чтобы получить время последней модификации веб-страницы:

$WebResponseObj. ParsedHtml | Select lastModified

Вы можете указать строку User Agent при подключении к веб-ресурсу. В PowerShell есть набор встроенных строк User Agent:

invoke-webRequest -Uri $uri -userAgent ([Microsoft.PowerShell.Commands.PSUserAgent]::Chrome)

Список доступных агентов можно вывести так:

[Microsoft.PowerShell.Commands.PSUserAgent].GetProperties() | Select-Object Name, @{n='UserAgent';e={ [Microsoft.PowerShell.Commands.PSUserAgent]::$($_.Name) }}

Либо вы можете задать собственную строку:

Invoke-WebRequest -Uri $uri -UserAgent 'MyApplication/1.1'

Использование Invoke-WebRequest с аутентификацией

Для доступа к некоторым веб ресурсам нужно выполнить аутентификацию. Вы можете использовать различные типы аутентификации совмести с командлетом Invoke-WebRequest (базовую, NTLM, Kerberos или аутентификацию по сертификату).

Для выполнения базовой аутентификации (Basic auth, аутентификация по имени и паролю зашифрованным в base64) сначала нужно получить имя пользователя и пароль:

$cred = Get-Credential
wget -Uri 'https://site. com' -Credential $cred

Для использования текущих учетных данных пользователя Windows для выполнения NTLM или Kerberos аутентификации, используйте параметр UseDefaultCredentials:

Invoke-WebRequest 'http://site.com' -UseDefaultCredentials

DefaultCredentials не работает с Basic аутентфикацией.

Для аутентификации по сертификату, нужно указать его отпечаток:

Invoke-WebRequest 'http://site.com' -CertificateThumbprint xxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Вы можете использовать современную Bearer/OAuth аутентификацию с помощью токена в ваших PowerShell скриптах.

  • Сначала нужно получить токен OAuth у вашего провайдера REST API
  • Сконвертируйте токен с помощью ConvertTo-SecureString:
    $Token = "123123123123123123123123123123123" | ConvertTo-SecureString -AsPlainText –Force
  • Теперь вы можете выполнить OAuth аутентфикацию:
    $Params = @{
    Uri = "https://yoursite.com"
    Authentication = "Bearer"
    Token = $Token }
    Invoke-RestMethod @Params

Парсинг HTML страниц с помощью Powershell

Командлет Invoke-WebRequest позволяет довольно быстро и удобно парсить содержимое любых веб-страниц. При обработке HTML страницы из ее содержимого формируются коллекции ссылок (links), веб-форм (forms), изображений (images), скриптов (scripts) и т.д.

Рассмотрим, как обратиться к конкретным объектам на веб-странице. Например, мы хотим получить список всех исходящих ссылок (объекты HREF) на полученной веб-странице:

$SiteAdress = "http://winitpro.ru"
$HttpContent = Invoke-WebRequest -URI $SiteAdress
$HttpContent.Links | Foreach {$_.href }

Чтобы получить и сам текст ссылки (содержится в элементе InnerText), можно воспользоваться такой конструкцией:

$HttpContent.Links | fl innerText, href

Можно выбрать только ссылки с определенным CSS классом:

$HttpContent.Links | Where-Object {$_.class -eq "page-numbers"} | fl innerText, href

Или определенным текстом в url:

$HttpContent.Links | Where-Object {$_.href -like "*exchange*"} | fl innerText,href

Теперь рассмотрим, как получить все изображения на данной странице:

$Img. Images

Сформируем коллекцию из полных url путей к используемым изображениям:

$images = $Img.Images | select src

Инициализируем новый экземпляр класса WebClient:

$wc = New-Object System.Net.WebClient

И скачаем все изображения со страницы (с оригинальными именами) в каталог c:\tools\:

$images | foreach { $wc.DownloadFile( $_.src, ("c:\tools\"+[io.path]::GetFileName($_.src) ) ) }

С помощью Invoke-WebRequest можно узнать внешний IP адреса компьютера из PowerShell через специальный веб-сервис.

Как скачать файл по HTTP с помощью PowerShell?

Invoke-WebRequest позволяет скачивать файлы с указанной веб-страницы или ftp сайта (работает как аналог Wget или cURL для Windows). Допустим, вы хотите скачать с HTTP сайта файл. Выполните такую команду PowerShell:

wget "https://download-installer.cdn.mozilla.net/pub/firefox/releases/102.0.1/win64/en-US/Firefox%20Setup%20102.0.1. exe" -outfile “c:\tools\firefox_setup.exe”

Этак команда скачает файл с HTTP сайта и поместит его в указанный каталог.

Так же вы можете скачать файлы с веб-сервера Windows при помощи BITS в синхронном режиме.

Вы можете получить размер файла в Мб перед его загрузкой:

$url = "https://download-installer.cdn.mozilla.net/pub/firefox/releases/102.0.1/win64/en-US/Firefox%20Setup%20102.0.1.exe"
(Invoke-WebRequest $url -Method Head).Headers.'Content-Length'/1Mb

Ниже приведен пример PowerShell скрипта, который найдет все ссылки на *.pdf файлы на веб странице и скачает все найденный файлы с сайта на ваш компьютер (каждый файл сохраняется под произвольным именем):

$OutDir="C:\Downloads\docs\PDF"
$SiteAdress = "https://www.site.ru/free-pdf-books/"
$HttpContent = Invoke-WebRequest -URI $SiteAdress
$HttpContent.Links | Where-Object {$_.href -like "*.pdf"} | %{Invoke-WebRequest -Uri $_.href -OutFile ($OutDir + $(Get-Random 100000)+". pdf")}

В современных версиях PowerShell Core (6.1 и выше) команделт Invoke-WebRequest поддерживает режим докачки. Обновите вашу версию PowerShell Core и вы можете использовать опцию Resume в команде Invoke-WebRequest для автоматического возобновления загрузки файла при проблемах на канале или недоступности сервера.

Заполнение и отправка веб-форм на Powershell

Многие веб-сервисы для работы требуют ввода различных данных в HTML формы. С помощью Invoke-WebRequest можно получить доступ к любой HTML-форме, заполнить необходимые поля и передать заполненную форму обратно на сервер. В этом примере мы покажем, как с помощью Powershell авторизоваться в почтовом ящике популярного российского сервиса mail.ru через его стандартную веб форму.

С помощью следующей конструкции сохраним информацию о куках (Cookies) подключения в отдельной сессионной переменной:

$mailru = Invoke-WebRequest https://e.mail.ru/login -SessionVariable session

Следующей командой отобразим список заполняемых полей в HTML форме авторизации (форма называется LoginExternal):

$mailru. Forms["LoginExternal"].Fields

Присвоим нужные значения всем полям:

$mailru.Forms["LoginExternal"].Fields["Login"] = "[email protected]"

$mailru.Forms["LoginExternal"].Fields["Password"] = "Str0NgP$$w0rd"

И т.д….

Чтобы передать заполненную форму на веб сервер, вызовем атрибут HTML-формы action.

$Log = Invoke-WebRequest -method POST -URI ("https://e.mail.ru/login" + $mailru.Forms["LoginExternal"].Action) -Body $mailru.Forms["LoginExternal"].Fields -WebSession $session

Также вы можете использовать формат JSON для отправки данных на веб страницу через метод POST:

$headers = @{
'Content-Type'='application/json'
'apikey'='1234567890'
}
$jsonbody = @{
"siteUrl" ="https://site.com"
"email" = "[email protected]"
}
Invoke-WebRequest -Method 'Post' -Uri $url -Body ($jsonbody |ConvertTo-Json) -Headers $headers -ContentType "application/json"

Invoke-WebRequest: игнорировать проверку SSL/TLS сертификатов

Командлет Invoke-WebRequest тесно связан с Internet Explorer. Например, в редакциях Windows Server Core, в которых IE не установлен (или удален), командлет Invoke-WebRequest использовать нельзя.

Invoke-WebRequest : The response content cannot be parsed because the Internet Explorer engine is not available, or Internet Explorer’s first-launch configuration is not complete. Specify the UseBasicParsing parameter and try again.

Вместо Invoke-WebRequest можно использовать класс WebClient:
(New-Object -TypeName 'System.Net.WebClient').DownloadFile($Url, $FileName)

Если на HTTP сайте используется некорректный SSL сертификат, или PowerShell не поддерживает этот тип протокола TLS, то командлет Invoke-WebRequest отказывается получать данные с него.

Invoke-WebRequest : The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel.
Invoke-WebRequest : Запрос был прерван: Не удалось создать защищенный канал SSL/TLS.
Invoke-WebRequest : The request was aborted: Could not create SSL/TLS secure channel. 

По умолчанию в Windows PowerShell (ранние билды Windows 10, Windows Server 2016 и более старые версии Windows) для подключения используется устаревший и небезопасный протокол TLS 1.0 (см. статью об ошибке установки PowerShell модуля: Install-Module: Unable to download from URI).

Если в Windows не отключены протоколы TLS 1.0 и TLS 1.1, нужно выполнить следующую команду, чтобы в текущей сессии PowerShell для подключения использовался протокол TLS 1.2:

[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12

Если вам нужно игнорировать самоподписанный сертификат SSL сертификат, используйте следующий PowerShell код:
add-type @"
using System.Net;
using System.Security.Cryptography.X509Certificates;
public class TrustAllCertsPolicy : ICertificatePolicy {
public bool CheckValidationResult(
ServicePoint srvPoint, X509Certificate certificate,
WebRequest request, int certificateProblem) {
return true;
}
}
"@
$AllProtocols = [System. Net.SecurityProtocolType]'Ssl3,Tls,Tls11,Tls12'
[System.Net.ServicePointManager]::SecurityProtocol = $AllProtocols
[System.Net.ServicePointManager]::CertificatePolicy = New-Object TrustAllCertsPolicy
$result = Invoke-WebRequest -Uri "https://site.ru"

В версиях PowerShell Core у командлета Invoke-WebRequest доступен параметр –SkipCertificateCheck, который позволяет игнорировать некорректные сертификаты.

Еще один существенный недостаток командлета Invoke-WebRequest — довольно низкая скорость работы. HTTP поток при загрузке файла целиком буферизируется в память, и только после окончания полной загрузки сохраняется на диск. Таким образом, при загрузке больших файлов вы можете столкнутся с нехваткой памяти.

Как установить несколько сеансов RDP в Windows 10/11

Удаленные пользователи могут подключаться к своим компьютерам с ОС Windows 10 и Windows 11 через службы удаленных рабочих столов (RDP). Достаточно включить RDP в настройках устройства и подключиться к компьютеру с помощью любого клиента удаленного рабочего стола, такого как MSTSC. Но существует ограничение на количество одновременных сеансов RDP – одновременно может работать только один удаленный пользователь. Если вы попытаетесь открыть второй сеанс RDP, появится предупреждение с просьбой отключить сеанс первого пользователя.

Изменения от 04.07.2023 г.

Настройка службы RDP на Windows 10

RDP работает только на Windows 10/11 Pro, в Home версии отключены нужные системные компоненты. Кроме этого, потребуется защитить паролем вашу учетную запись.

Включение доступа и добавление пользователей.

Откройте Пуск и нажмите на шестеренку Параметры.

Откройте раздел с настройкой системы.


Далее перейдите к настройке удаленного рабочего стола.

Включить удаленный рабочий стол.


Перейти в настройки электропитания, отключить переход компьютера в спящий режим.


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


Добавляем еще пользователей.

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


На самом деле, количество одновременных подключений RDP в системе Windows ограничено лицензией, а не каким-либо техническим аспектом. Таким образом, это ограничение не позволяет создать терминальный RDP-сервер на базе компьютера с системой Windows 10/11. Логика компании Microsoft проста, если вам нужен сервер терминалов – купите лицензию Windows Server, RDS CALs, установите и настройте роль сервера сеансов удаленного рабочего стола.

Но технически, любая версия Windows, с достаточным объемом оперативной памяти может поддерживать одновременную работу нескольких удаленных пользователей. В среднем, для одного сеанса пользователя, требуется около 200 МБ оперативной памяти (без учета запущенных приложений). Т.е. максимальное количество одновременных сеансов RDP теоретически ограничено только компьютерными ресурсами.

Рассмотрим два способа разрешить одновременные RDP-подключения в Windows 10/11:

  • с помощью RDP Wrapper
  • исправления библиотеки termsrv.dll

RDP Wrapper

Проект RDP Wrapper – ПО с открытым исходным кодом, позволяет включить несколько сеансов RDP в Windows 10 без замены файла termsrv.dll. Этот инструмент работает как связующее звено между SCM (Service Control Manager) и службами удаленного рабочего стола. RDPWrap позволяет включить не только поддержку нескольких одновременных RDP-подключений, но и создать RDP-сервер в Windows Home. RDP Wrapper не вносит никаких изменений в termsrv.dll файл, это просто загрузка библиотеки termsrv с измененными параметрами.

Таким образом, RDPWrap будет работать даже в случае изменения файла termsrv.dll. Это позволяет не бояться обновлений Windows.

Вы можете загрузить RDP Wrapper из репозитория GitHub https://github.com/binarymaster/rdpwrap/releases (последняя доступная версия библиотеки RDP-оболочки — v1. 6.2).

В RDPWrap-v1.6.2.zip содержит несколько файлов:

  • RDPWinst.exe — библиотека-оболочка RDP для установки/удаления программы
  • RDPConf.exe — инструмент настройки оболочки RDP
  • RDPCheck.exe — утилита проверки RDP (Local RDP Checker)
  • Install.bat, uninstall.bat, update.bat — пакетные файлы для установки, удаления и обновления оболочки RDP

Для установки оболочки необходимо запустить файл Install.bat с правами администратора.

RDPWrap не работает в Windows 10

После завершения установки запустите RDPConfig.exe . Скорее всего, сразу после установки инструмент покажет, что оболочка RDP запущена (установлена, запущена), но не работает. Обратите внимание на красное предупреждение [not supported]. В нем сообщается, что эта версия Windows 10 (версия 10.0.19041.1387) не поддерживается оболочкой RDP.

Дело в том, что для каждой версии Windows 10/11 должно быть описание в конфигурационном файле rdpwrap. ini. В текущем конфигурационном файле просто нет никаких настроек для вашей сборки Windows.

Текущую версию файла rdpwrap.ini можно загрузить здесь: https://raw.githubusercontent.com/sebaxakerhtc/rdpwrap.ini/master/rdpwrap.ini

Во всех источниках в интернете находятся советы, что необходимо скопировать новый файл rdpwrap.ini в “C:\Program Файл Files\RDP Wrapper\rdpwrap.ini” и перезапустить службу TermService. Но у меня это ни разу не получилось, ввиду того, что при перезапуске службы, оригинальный файл rdpwrap.ini восстанавливался на место нового.

Немного поискав решение этой проблемы, наткнулся на файл автоматического обновления rdpwrap.ini:

  • С сайта GitHub
  • С нашего сайта

Необходимо скопировать файлы RDPWinst.exe, RDPConf.exe, RDPCheck.exe и autoupdate.bat в каталог C:\Program Файл Files\RDP Wrapper\ и запустить autoupdate.bat.

После завершения установки запустите RDPConfig.exe

Все работает!

Обновление Параметров Групповой политики

Количество подключений к компьютеру может быть ограничено правилами групповой политики.

В этом случае вы можете использовать редактор локальной групповой политики (gpedit.msc), чтобы включить политику “Ограничить количество подключений” в разделе Конфигурация компьютера -> Административные шаблоны -> Компоненты Windows -> Службы удаленных рабочих столов -> Узел сеансов удаленных рабочих столов -> Подключения –> Ограничить количество подключений.
Измените его значение на 999999.


Модификация Termsrv.dll

Второй, более трудозатратный метод – изменение файла Termsrv.dll.
для этого нужно сделать копию файла, затем нужно стать владельцем файла.

Для начала, остановите службу удаленного рабочего стола (TermService) из командной строки:
Net stop TermService

Чтобы изменить владельца файла с TrustedInstaller на локальную группу администраторов нужно выполнить команду:
takeown /F c:\Windows\System32\termsrv.dll /A

Теперь предоставьте локальной группе администраторов разрешения на полный контроль над termsrv. dll файл с использованием icacls.exe:
icacls c:\Windows\System32\termsrv.dll /grant Администраторы:F

Затем откройте termsrv.dll файл с использованием любого шестнадцатеричного редактора (например, WinHex). В зависимости от вашей сборки Windows вам необходимо найти и заменить строку в соответствии с приведенной ниже таблицей:













Версия WindowsСтрока поиска

Windows 11 RTM (21h3 – 22000.258)

39 81 3C 06 00 00 0F 84 4F 68 01 00

Windows 10 x64 22h3 19045.2486

39 81 3C 06 00 00 0F 84 DB 61 01 00

Windows 10 x64 21h3

39 81 3C 06 00 00 0F 84 85 45 01 00

Windows 10 x64 21h2

39 81 3C 06 00 00 0F 84 2B 5F 01 00

Windows 10 x64 20h3

39 81 3C 06 00 00 0F 84 21 68 01 00

Windows 10 x64 2004

39 81 3C 06 00 00 0F 84 D9 51 01 00

Windows 10 x64 1909

39 81 3C 06 00 00 0F 84 5D 61 01 00

Windows 10 x64 1903

39 81 3C 06 00 00 0F 84 5D 61 01 00

Windows 10 x64 1809

39 81 3C 06 00 00 0F 84 3B 2B 01 00

Windows 10 x64 1803

8B 99 3C 06 00 00 8B B9 38 06 00 00

Windows 10 x64 1709

39 81 3C 06 00 00 0F 84 B1 7D 02 00

Строка замены
B8 00 01 00 00 89 81 38 06 00 00 90

Данную таблицу я нашел на просторах интернета. Проверка данного метода в полевых условиях привела к тому, что я не нашел данную последовательность в своем файле termsrv.dll.

Но если понять суть, то все решается достаточно легко. Необходимо искать последовательность: 39 81 3C 06 00 00 0F 84, последние 4 байта не особо важны.
Я нашел последовательность 39 81 3C 06 00 00 0F 84 73 55 01 00


Замена на
B8 00 01 00 00 89 81 38 06 00 00 90


Обновление от 27.01.2023 г.

Вышло новое обновление Windows 10 22h3 версия сборки: 19045.2486 и 19045.2604

Версия файла termsrv.dll: 10.0.19041.2075


Открываем файл в WinHex, находим исходную последовательность: 39 81 3C 06 00 00 0F 84 85 45 01 00.



Меняем на строку замены.

Обновление от 04.07.2023 г.

Скачать измененный файл termsrv.dll для конкретной версии Windows 10 можно в данной таблице.




Версия WindowsСкачать termsrv.dll

Windows 10 x64 22h3 сборка 19045.2486 и 19045.2604

termsrv.dll

Windows 10 x64 22h3 сборка 19045.3086

termsrv.dll

Сохраните модифицированный файл и запустите службу TermService.

Если что-то пойдет не так, остановите службу и замените измененный termsrv.dll файл с оригинальной версией.
В моем случае модификация файла помогла включить несколько сеансов RDP.

Преимущество метода включения нескольких сеансов RDP в Windows 10 или 11 путем замены termsrv.dll файл заключается в том, что антивирусы на него не реагируют, в отличие от RDPWrap, который обнаруживается многими антивирусами как вредоносное ПО.

Основным недостатком является то, что вам придется вручную редактировать termsrv. dll файл при каждом обновлении сборки Windows 10/11. И если вы используете RDPWrap, вам также потребуется обновить файл rdpwrap.ini после установки обновлений Windows.

Обзор Windows Terminal

Редактировать

Твиттер

LinkedIn

Фейсбук

Электронная почта

  • Статья

Windows Terminal — это современное хост-приложение для уже полюбившихся вам оболочек командной строки, таких как Command Prompt, PowerShell и bash (через подсистему Windows для Linux (WSL)). Его основные функции включают в себя несколько вкладок, панелей, поддержку символов Unicode и UTF-8, механизм рендеринга текста с ускорением на графическом процессоре, а также возможность создавать собственные темы и настраивать текст, цвета, фон и ярлыки.

Установка терминала Windows

Примечание

Для получения более общей информации ознакомьтесь со статьей Скотта Хансельмана: В чем разница между консолью, терминалом и оболочкой? или видео Рича Тернера Что такое оболочка командной строки?

Несколько профилей, поддерживающих различные приложения командной строки

Любое приложение, имеющее интерфейс командной строки, может быть запущено в Терминале Windows. Это включает в себя все, от PowerShell и командной строки до Azure Cloud Shell и любого дистрибутива WSL, такого как Ubuntu или Oh-My-Zsh.

Вы можете вырывать вкладки в Терминале Windows и создавать новые окна.

Вы также можете перетаскивать вкладки в существующие окна.

Важно

Эта функция доступна только в Windows Terminal Preview.

Индивидуальные схемы и конфигурации

Вы можете настроить Windows Terminal для использования различных цветовых схем и настроек. Чтобы узнать, как настроить подсказку с помощью классных тем, см. Учебное пособие. Настройка пользовательской подсказки для PowerShell или WSL с помощью Oh My Posh. Чтобы узнать, как создать собственную цветовую схему, посетите страницу Цветовые схемы.

Пользовательские действия

Существует множество пользовательских команд, которые вы можете использовать в Терминале Windows, чтобы сделать его более естественным для вас. Если вам не нравится конкретное сочетание клавиш, вы можете изменить его на любое другое.

Например, ярлык по умолчанию для копирования текста из командной строки — ctrl+shift+c . Вы можете изменить это на ctrl+1 или как вам больше нравится. Чтобы открыть новую вкладку, по умолчанию используется сочетание клавиш ctrl+shift+t , но, возможно, вы захотите изменить его на 9.0050 Ctrl+2 . Ярлык по умолчанию для переключения между открытыми вкладками — ctrl+tab , его можно изменить на ctrl+- и вместо этого использовать для создания новой вкладки.

Вы можете узнать о настройке ярлыков на странице Действия.

Поддержка символов Unicode и UTF-8

Терминал Windows может отображать символы Unicode и UTF-8, такие как эмодзи и символы различных языков.

Отрисовка текста с ускорением на графическом процессоре

Терминал Windows использует графический процессор для рендеринга текста, что обеспечивает более высокую производительность по сравнению с интерфейсом командной строки Windows по умолчанию.

Поддержка фонового изображения

Вы можете использовать фоновые изображения и GIF-файлы в окне терминала Windows. Информацию о том, как добавить фоновые изображения в свой профиль, можно найти на странице Профиль — Внешний вид.

Аргументы командной строки

Вы можете настроить Windows Terminal для запуска в определенной конфигурации, используя аргументы командной строки. Вы можете указать, какой профиль открывать в новой вкладке, какой каталог папки следует выбрать, открыть терминал с разделенными панелями окон и выбрать, какая вкладка должна быть в фокусе.

Например, чтобы открыть Windows Terminal из PowerShell с тремя панелями, где левая панель работает с профилем командной строки, а правая панель разделена между вашей PowerShell и профилем по умолчанию, на котором работает WSL, введите:

 wt -p "Командная строка" `; разделенная панель -p "Windows PowerShell" `; разделенная панель -H wsl.exe
 

Узнайте, как настроить аргументы командной строки на странице Аргументы командной строки.

Обратная связь

Просмотреть все отзывы о странице

Параметры запуска терминала Windows | Microsoft Learn

  • Статья

Перечисленные ниже свойства влияют на все окно терминала, независимо от настроек профиля. Их следует поместить в корень вашего файла settings.json.

Профиль по умолчанию

Установите профиль по умолчанию, который открывается, набрав ctrl+shift+t , введя привязку клавиш, назначенную newTab , запустив wt new-tab без указания профиля или нажав «+» икона.

Имя свойства: defaultProfile

Необходимость: Обязательно

Допустимо: GUID или имя профиля в виде строки

Значение по умолчанию: GUID PowerShell


Приложение терминала по умолчанию

Установите эмулятор терминала по умолчанию в Windows для запуска всех приложений командной строки.

Имя свойства: Изменяет параметр ОС и не имеет имени свойства в файле settings.json.

Необходимость: Обязательно

Принимается: Любой эмулятор терминала, который отображается в раскрывающемся списке

Значение по умолчанию: Хост консоли Windows

Важно

Эта функция доступна только при использовании Windows 10 Insider Program Dev Channel или Windows 11.


Запуск при запуске компьютера

Если установлено значение true , это позволяет запускать терминал Windows при запуске. Установка для этого параметра значения false отключит запись задачи запуска.

Примечание. Если запись задачи запуска терминала Windows отключена либо политикой организации, либо действием пользователя, этот параметр не будет действовать.

Имя свойства: startOnUserLogin

Необходимость: Дополнительно

Принимает: true , false

Значение по умолчанию: false


Поведение при запуске нового терминала session

Если установлено значение "defaultProfile" , Windows Terminal начнет новый сеанс, открыв одну вкладку с вашим профилем по умолчанию.

При установке на "persistedWindowLayout" , это позволяет Windows Terminal сохранять макет открытых окон при закрытии и восстанавливать все сохраненные окна при запуске нового сеанса. Терминал Windows автоматически сохранит макет всех открытых окон, чтобы помочь в восстановлении после сбоев, а также сохранит макет при использовании действия quit . Кроме того, закрытие последнего открытого окна нажатием кнопки X или использованием команды closeWindow сохранит макет этого последнего окна.

Примечание. В настоящее время Windows Terminal сохраняет следующую информацию:

  • Положение, размер и имя каждого окна

  • Макет вкладок каждого окна, включая макет и профиль каждой панели, но не содержимое этих панелей

  • Если ваша оболочка настроена на отчет о текущем рабочем каталоге, который также будет сохранен

Имя свойства: firstWindowPreference

Необходимость: Дополнительно

Принимается: "defaultProfile" , "persistedWindowLayout"

Значение по умолчанию: "DefaultProfile"


Режим запуска

Определяет, будет ли терминал запустится в развернутом виде, на весь экран или в окне. Установка этого параметра на focus эквивалентна запуску терминала в режиме по умолчанию , но с включенным режимом фокуса. Точно так же, установив это значение на maximatedFocus приведет к запуску терминала в развернутом окне с включенным режимом фокусировки.

Имя свойства: launchMode

Необходимость: Дополнительно

Принимает: "по умолчанию" , " максимизировано" , "полноэкранный" , "фокус" , "максимизирован фокус" "

Значение по умолчанию: "по умолчанию"


Новое поведение экземпляра

Этот параметр определяет способ подключения новых экземпляров терминала к существующим окнам. Это свойство используется только в том случае, если не указан аргумент командной строки --window,-w window . Этот параметр принимает следующие возможные значения:

  • useNew : Всегда создавать новое окно. Так всегда вел себя терминал до версии 1.7.
  • useExisting : создавать новые вкладки в последнем использовавшемся окне на этом рабочем столе. Если на этом виртуальном рабочем столе нет существующего окна, создайте новое окно терминала.
  • useAnyExisting : создавать новые вкладки в последнем использовавшемся окне, независимо от того, на каком виртуальном рабочем столе находится это окно.

Имя свойства: windowingBehavior

Необходимость: Дополнительно

Принимает: "useNew" , 90 110 "useExisting" , "useAnyExisting"

Значение по умолчанию: "useNew "


Стартовый размер

Столбцы при первом запуске

Это количество столбцов символов, отображаемых в окне при первой загрузке. Если launchMode имеет значение "maximized" или "maximizedFocus" , это свойство игнорируется.

Имя свойства: initialCols

Необходимость: Необязательный значение: 120

Строки при первом запуске

Количество строк, отображаемых в окне при первой загрузке. Если launchMode имеет значение "maximized" или "maximizedFocus" , это свойство игнорируется.

Имя свойства: initialRows

Необходимость: Дополнительно

Принимает: Целое

По умолчанию значение: 30


Позиция запуска

Это устанавливает положение в пикселях верхней части левый угол окна при первой загрузке. В системе с несколькими дисплеями эти координаты относятся к верхнему левому углу основного дисплея. Если координата X или Y не указана, терминал будет использовать системное значение по умолчанию для этого значения. Если launchMode имеет значение "maximized" или "maximizedFocus" , окно будет развернуто на мониторе, заданном этими координатами.

Имя свойства: initialPosition

Необходимость: Дополнительно

Принимается: Координаты в виде строки в следующих форматах: "," 9 0111, "#,#" , "#, " , ",#"

Значение по умолчанию: ","


Центрировать при запуске

Если установлено значение true , окно терминала будет автоматически центрироваться на дисплее, на котором оно открывается. Терминал будет использовать "initialPosition" , чтобы определить, на каком дисплее открывать.

Это взаимодействует с другими настройками запуска следующим образом:

  • "initialPosition": "x,y" , "centerOnLaunch": true , "launchMode": "default" : центрировать следить за этим x,y включен.
  • "initialPosition": "x,y" , "centerOnLaunch": true , "launchMode": "максимум" : развернут на мониторе, на котором включен x,y ( centerOnLaunch ничего не добавляет) .
  • "initialPosition": <опущено> , "centerOnLaunch": true , "launchMode": "по умолчанию" : по центру монитора по умолчанию.
  • "initialPosition": <опущено> , "centerOnLaunch": правда , «launchMode»: «фокус» : центрировать и войти в режим фокусировки на мониторе по умолчанию.
  • "initialPosition": <опущено> , "centerOnLaunch": true , "launchMode": "развернуто" : развернуто на мониторе по умолчанию ( centerOnLaunch ничего не добавляет).

Имя свойства: centerOnLaunch

Необходимость: Дополнительно

Принимает: true , false

Значение по умолчанию: false


Отключить динамические профили

Задает, какие генераторы динамических профилей будут отключены, не позволяя им добавлять свои профили в список профилей при запуске. Для получения информации о динамических профилях посетите страницу Динамические профили.

Имя свойства: disabledProfileSources

Необходимость: Дополнительно

Допустимо: "Windows.Terminal.Wsl" , "Windows.Terminal.Azure" , "Windows.Terminal.PowershellCore" и/или "Windows.Terminal.SSH" внутри массива

900 16 По умолчанию значение: []


Действия при запуске

Задает список действий, выполняемых при запуске, позволяя терминалу запускаться с пользовательским набором вкладок и панелей по умолчанию. Эти действия будут применяться только в том случае, если аргументы командной строки не указаны. Список действий представлен строкой того же формата, что и команды в аргументах командной строки. Дополнительные сведения о формате команд см. на странице аргументов командной строки.

Имя свойства: startupActions

Необходимость: Дополнительно

Допустимые значения: Строка, представляющая список команд для запуска

90 116 Значение по умолчанию: ""


Продолжить работу в background (Preview)

Если установлено значение true , это позволяет терминалу продолжать работу в фоновом режиме после закрытия последнего окна.

Читайте также: