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

Еще можно внести изменения в реестр в процессе настройки консоли PowerShell, однако подробное описание этого подхода выходит за рамки данной статьи. Помните, что вносить изменения в реестр – это не самый гибкий и легкий способ настройки консоли PowerShell. К тому же такой подход потребует от вас большой осторожности.

Настройка свойств консоли PowerShell

При первом запуске PowerShell внешний вид консоли определяется настройками свойств по умолчанию или параметрами, которые установлены «горячей клавишей» и проходят как аргументы к исполняемому файлу PowerShell. Например, когда вы запускаете PowerShell, дважды щелкая на файле powershell.exe, он открывается с установками свойств по умолчанию. То же касается и запуска PowerShell «горячей клавишей», которую вы создали для исполняемого файла или запуска PowerShell из командной строки Windows. Вы увидите маленькое окно командного процессора с черным фоном и серым шрифтом, как показано на экране 1.

 

Окно PowerShell при запуске файла powershell.exe
Экран 1. Окно PowerShell при запуске файла powershell.exe

Если вы запускаете PowerShell из меню «Пуск», то увидите иную картину. В этом случае окно консоли больше, с голубым фоном и серым шрифтом, как показано на экране 2. Отличие обусловлено тем, что процесс установки PowerShell создает пункты меню «Пуск» с параметрами, необходимыми для изменения окружения консоли.

 

Окно PowerShell при запуске из меню
Экран 2. Окно PowerShell при запуске из меню

Независимо от того, как вы запускаете PowerShell, вы можете изменить внешний вид консоли через настройки свойств. Для доступа к ним щелкните на значке PowerShell в верхнем левом углу окна консоли, а затем на Properties, чтобы открыть диалоговое окно «Свойства».

Диалоговое окно Properties («Свойства») включает четыре вкладки: Options («Параметры»), Font («Шрифт»), Layout («Расположение») и Colors («Цвета»). Каждая из них содержит настройки, которые в случае необходимости можно изменить. На экране 3 показана вкладка Options. Здесь вы можете настроить размер курсора и процедуру запоминания команд. Также предусмотрено два режима редактирования: QuickEdit Mode и Insert Mode. Режим QuickEdit Mode позволяет копировать и выполнять вставку команд в консоли PowerShell с помощью мыши. Режим Insert Mode позволяет вставить новый текст в строку вместо его перезаписи.

 

Окно свойств PowerShell, вкладка Options
Экран 3. Окно свойств PowerShell, вкладка Options

На экране 4 вы видите вкладку Font, содержащую параметры, которые можно применить к шрифту в консоли PowerShell. Хотя их немного, у вас все же есть несколько вариантов, чтобы выбрать размер и стиль.

 

Окно свойств PowerShell, вкладка Font
Экран 4. Окно свойств PowerShell, вкладка Font

Вкладка Layout позволяет выбрать размер буфера, размер окна и его расположение, как показано на экране 5. Размер буфера устанавливает ширину (количество символов) и высоту (количество строк) вашего буфера. Размер буфера может быть такой же, как размер окна, и больше него, но он не может быть меньше. Многие администраторы считают, что увеличивать размер буфера, особенно высоту – это удобно. Размер окна определяет ширину и высоту актуального окна консоли. Опять же, оно не может быть больше размера буфера. Область расположения окна указывает, где будет располагаться окно консоли на вашем «рабочем столе», нужно только задать позицию левого верхнего угла окна или позволить сделать это системе.

 

Вкладка Layout
Экран 5. Вкладка Layout

На экране 6 показана вкладка Colors, где вы можете выбрать цвета текста и фона. Для этого можно прибегнуть к самому простому способу – выбрать элемент (например, текст на экране, Screen Text), а затем щелкнуть на цвете в панели цветов. Если вам известно заданное значение в схеме Red, Green, Blue (RGB) для определенного цвета, вы можете ввести его, но помните, что это повлияет и на другие элементы того же цвета, в результате чего могут получиться довольно неожиданные эффекты. Вы можете заранее просмотреть сделанные изменения в окне предварительного просмотра, и увидеть, как то или иное изменение повлияло на вид консоли.

 

Вкладка Colors
Экран 6. Вкладка Colors

После того, как вы задали разные свойства, щелкните OK, чтобы закрыть диалоговое окно Properties. Все изменения применяются немедленно. На экране 7 показано, как выглядит консоль PowerShell после того, как вы ее расширили, поменяли цвет фона на белый, а текст сделали черным.

 

Измененное окно PowerShell
Экран 7. Измененное окно PowerShell

Ваши изменения сохранятся, пока вы перезапускаете PowerShell из места первоначального запуска. К примеру, если вы запускаете PowerShell из меню «Пуск», измените настройки свойств и перезапустите PowerShell из меню «Пуск», и ваши изменения сохранятся. Однако при запуске PowerShell «горячей клавишей», созданной для исполняемого файла, ваши изменения никак не воспроизведутся. Чтобы ваши изменения сохранялись независимо от способа запуска PowerShell, следует предпринять другие шаги, и в первую очередь изучить, как написать сценарий настройки параметров.

Сценарии настройки консоли

PowerShell – это прежде всего среда написания сценариев. Хотя о PowerShell зачастую говорят как об интерактивной консоли управления, в основном это инструмент для создания и этапа исполнения сценариев, даже если они взаимодействуют с другими системами. С помощью PowerShell можно написать любой сценарий, включая настройки, влияющие на консоль PowerShell. Возможность управлять параметрами посредством сценариев обеспечивает легкий способ применения этих настроек к большому количеству экземпляров консоли PowerShell, независимо от того, находятся они на одном компьютере или на разных. Вы можете сохранить свои настройки в файле сценария и выполнить его, когда настройки нужно будет применить. А лучше сделать так: сохранить настройки в файле (подробнее об этом будет рассказано в следующем разделе), для того чтобы они применялись в любое время, когда вы открываете PowerShell, причем не важно, используете вы исполняемый файл или «горячую клавишу» в меню «Пуск». Создание сценариев обеспечит доступ к настройкам, недоступным через свойства консоли, например к настройкам цвета предупреждающих сообщений.

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

Например, когда выполняется команда Get-Host, PowerShell возвращает объект, содержащий подробную информацию об окружении PowerShell, в частности имя, версию и информацию, касающуюся настроек оболочки. Один из элементов объекта Get-Host – это свойство графического интерфейса UI, особый тип свойства, связанный с собственным объектом, производным от класса Microsoft. NET Framework. Объект графического интерфейса в свою очередь включает свойство RawUI, обеспечивающее доступ к специфическим свойствам консоли.

Работая с объектами PowerShell, лучше всего назначать их переменной, чтобы можно было легко получить доступ к элементам объекта. PowerShell предоставляет встроенную переменную —$host—для доступа Get-Host. Это означает, что вы используете переменную $host для доступа к свойствам UI и RawUI.

Свойство RawUI – это особый тип свойств, связанных с собственным объектом, как и со свойством UI. Свойства консоли доступны через объект RawUI. Давайте на примере рассмотрим, как это работает. Следующая команда создает переменную под именем $console и назначает экземпляр объекта RawUI переменной:

$console = $host.UI.RawUI

Отметим, что объект RawUI доступен с указанием переменной $host, затем с указанием свойства UI и с последующим указанием свойства RawUI. Если присвоить команду $host.UI.RawUI переменной $console, переменная создается как тип объекта RawUI, предоставляющий доступ к свойствам консоли, чтобы вы могли их конфигурировать.

Например, следующие команды устанавливают свойство ForegroundColor (то есть текст) и свойство BackgroundColor объекта RawUI:

$console.ForegroundColor = «black»
$console.BackgroundColor = «white»

Как мы видим, необходимо только задать переменную $console с последующим именем свойства. Следом идет знак равенства (=) и новый цвет, заключенный в двойные кавычки. В данном случае задается черный цвет для текста и белый – для фона.

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

Clear-Host

Теперь давайте взглянем на другое свойство RawUI — BufferSize. Как следует из названия, оно позволяет установить ширину и высоту буфера. Однако это одно из особых свойств, связанных с его собственным объектом, а значит, лучший подход – задать переменную для хранения объекта. Теперь у вас есть доступ к свойствам из этой переменной, как видно из примера:

$buffer = $console.BufferSize
$buffer.Width = 130
$buffer.Height = 2000
$console.BufferSize = $buffer

Сначала вы создаете переменную the $buffer для хранения объекта BufferSize. Затем вы используете эту переменную для установки свойств Width («ширина») и Height («высота»), аналогично тому, как до этого были установлены цвета текста и фона. Тем не менее, вы должны выполнить еще один шаг, а именно присвоить значения переменной $buffer фактическому свойству BufferSize объекта RawUI.

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

$size = $console.WindowSize
$size.Width = 130
$size.Height = 50
$console.WindowSize = $size

В данном случае в первую очередь вы создаете переменную под названием $size для хранения объекта, связанного со свойством WindowSize. Затем вы устанавливаете свойства Width и Height, точно так же, как и для объекта BufferSize. В заключение вы присваиваете значение переменной $size свойству WindowSize объекта RawUI. Обратите внимание, что, устанавливая размер окна, его можно сделать больше буфера (как было сказано ранее), но он не может быть больше размера, поддерживаемого вашей системой. Если вы получаете сообщение об ошибке, что ширина или высота окна не может быть больше указанного размера, настройте ваш код.

Объект RawUI содержит не все свойства, которые можно установить. Объект Get-Host также поддерживает свойство PrivateData, связанное с объектом. Объект PrivateData включает ряд свойств, относящихся к цветам шрифта и фона, применяемых для ответов консоли, например в сообщениях об ошибке или предупреждающих сообщениях.

Чтобы упростить вызов этих свойств, вы можете присвоить свойство PrivateData переменной, а затем вызвать переменную, как показано в сценарии:

$colors = $host.PrivateData
$colors.VerboseForegroundColor = «white»
$colors.VerboseBackgroundColor = «blue»
$colors.WarningForegroundColor = «yellow»
$colors.WarningBackgroundColor = «darkgreen»
$colors.ErrorForegroundColor = «white»
$colors.ErrorBackgroundColor = «red»

Сначала вы создаете переменную под именем $colors для хранения объекта PrivateData. Затем вы используете переменную для доступа к нескольким свойствам объекта, чтобы определить их цвета. В основном такой подход используется для установки свойств ForegroundColor и BackgroundColor объекта RawUI. Вы просто определяете значения вместо присваивания переменной $colors свойству PrivateData, как делали в случае с BufferSize и WindowSize.

Определив все свойства, снова выполните команду Clear-Host:

Clear-Host

Ваш экран теперь будет выглядеть так, как показано на экране 7. Теперь можно протестировать новый формат, выполнив ряд команд. Следующие команды создают несколько типов сообщений, которые будут отображены в цветах, заданных вами ранее:

Write-Output «This is a test message.»
Write-Verbose «This is a verbose message.» -Verbose
Write-Warning «This is a warning message.»
Write-Error «This is an error message.»

В целом используемые здесь команды не требуют пояснений. Команда Write-Output выводит стандартные сообщения на фоне и в шрифте по умолчанию. Остальные три команды создают сообщения, тип которых отражен в их названиях. На экране 8 показано, как выглядит консоль после создания тестовых сообщений.

 

Изменение настроек цвета стандартных сообщений
Экран 8. Изменение настроек цвета стандартных сообщений

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

Добавление сценария настройки консоли в файл настроек

Возможность создания сценариев настроек консоли упрощает применение настроек в любое время, когда вам нужно. Вы можете сохранить их в файле сценария и вызвать файл, когда это необходимо. Или же можно вырезать и вставить сценарий в консоли и запускать команды этим способом. В любом случае вам необходимо иметь доступ к своему файлу сценария в любое время, чтобы применить настройки к консоли. Удобнее всего сохранить сценарий в одном из файлов настроек PowerShell.

PowerShell поддерживает четыре типа файлов настроек и выполняет их при запуске в определенном порядке. Однако подробное рассмотрение файлов настроек PowerShell выходит за рамки данной статьи. Итак, давайте создадим файл, относящий к текущему пользователю.

Чтобы узнать, где должен располагаться файл, вы можете применить встроенную переменную $profile для возвращения пути и имени, используемого для файла. Для этого просто запустите команду:

$profile

Переменная возвращает полное имя файла, например C:UsersAdministratorDocumentsWindowsPowerShellMicrosoft.PowerShell_profile.ps1. Тем не менее, основываясь лишь на том, что переменная $profile указывает на файл, нельзя сделать вывод о существовании файла. Поэтому следующим шагом будет запуск команды:

Test-Path $profile

Команда Test-Path проверяет наличие файла. Если он существует, команда возвращает True; если нет, возвращается False. В последнем случае вам нужно выполнить следующую команду, прежде чем вы предпримите какие-либо другие действия:

New-Item -path $profile -type file -force

Команда New-Item создает файл на основе аргумента, переданного в параметре -path, в данном случае это переменная $profile. Параметр -type указывает, что создаваемый элемент — не что иное, как файл (как и определено ключевым словом «файл»). Параметр -force предписывает команде создать файл.

После того, как файл создан, вы можете повторить команду Test-Path и убедиться, что o она возвращает True. Готовый файл можно редактировать с помощью команды:

notepad $profile

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

 

Файл с настройками окна консоли
Экран 9. Файл с настройками окна консоли

Однако учтите, что сценарий включает в себя команду:

Set-Location C:

Эта команда всего лишь предписывает PowerShell установить корневую папку в C:. Вы можете указать свою папку. Можно также задать «горячую клавишу» для быстрого перехода к корневой папке или определить корневую папку во время сессии PowerShell. Однако ее добавление к вашему файлу настроек помогает сохранить все настройки в одном месте. Кроме того, можно включить дополнительные команды в файл, например определить переменные, которые вы захотите использовать в каждой сессии.

Когда вы убедитесь, что ваш файл содержит все необходимое, просто сохраните все установки и закройте Notepad. Затем вы должны перезапустить PowerShell для применения настроек. Вы можете перезапустить PowerShell из любого местоположения. Тот же самый файл настроек будет применяться в каждом случае. Фактически вы даже можете сохранить свой файл в другой папке, так что сможете применить настройки к другим экземплярам PowerShell, и при этом не имеет значения, на каком компьютере вы работаете. Этот подход также позволяет разделять общий файл с другими пользователями. Не забудьте проверить документацию PowerShell, которая содержит более подробную информацию о работе с файлами настроек.

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

 

Ошибка при запуске файла с настройками
Экран 10. Ошибка при запуске файла с настройками

Для запуска сценария выполните команду:

Set-ExecutionPolicy RemoteSigned

Эта команда позволяет запускать локальные или удаленные сценарии, имеющие цифровую подпись надежного издателя. Помните, однако, что политика этапа исполнения регулирует возможность или невозможность исполнения сценариев на вашей системе. Неправильные настройки поставят под угрозу безопасность системы. Убедитесь, что вы внимательно прочитали информацию о политиках этапа исполнения в документации PowerShell, прежде чем вносить какие-либо изменения в систему.

Консоль для пользователя

PowerShell обеспечивает достаточную гибкость при настройке консоли. Вы можете установить свойства консоли, запускать сценарии для настройки параметров или изменять свой файл настроек, чтобы они применялись всякий раз при запуске PowerShell. Добавление соответствующего сценария в файл настроек даст вам наибольшую гибкость при наименьших затратах на техническое обслуживание в течение долгого времени. Файл настроек сохранит ваш сценарий, а значит, вам не придется повторно применять настройки всякий раз при запуске PowerShell. Такой подход обеспечивает больше возможностей, чем свойства консоли, и для вас не будет играть никакой роли, запускаете вы PowerShell из меню «Пуск» или откуда-то еще. Благодаря продуманной среде для написания сценариев, которую предусматривает PowerShell, вам ничто не мешает сделать консоль настолько удобной в работе, насколько это возможно.