Как сделать powershell красивее

Добавил пользователь Владимир З.
Обновлено: 15.09.2024

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

Давайте посмотрим, как это можно сделать.

Я не буду подробно описывать настройки внешнего вида консоли, которые можно сделать, щелкнув правой кнопкой мыши на заголовке окна Powershell. Там все довольно просто, только действуют эти настройки до перезапуска Powershell. Давайте лучше узнаем, как изменять настройки с помощью самого Powershell и как сделать так, чтобы при начале работы с ним, вы получали уже настроенный под ваши желания инструмент.

Итак, для сохранения пользовательских настроек предусмотрены профили Powershell — файлы сценариев с расширением .ps1, который выполняется при запуске консоли и выполняет все заданные настройки.

Профиль Powershell, создание.

Для создания профиля Powershell для текущего пользователя нужно сделать следующее:

date

23.09.2015

user

itpro

directory

PowerShell

comments

комментария 2

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

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

Вывести список пунктов меню, предлагаемых пользователю, можно так:

Write-Host '1. Start Windows Update service'
Write-Host '2. Stop Windows Update service'
Write-Host '3. Exit'

Далее предложим пользователю выбрать пункт, набрав его номер:

$selected_menu_item = Read-Host 'Select menu item'

Затем выбор пользователя обработаем при помощи оператора switch:

Запускаем скрипт и проверяем его работоспособность.

Функция построения цветного вызывается таким образом:

CreateMenu -Title "Windows Update Script" -MenuItems "Start Windows Update service","Stop Windows Update service","Exit" -TitleColor Red -LineColor Cyan -MenuItemColor Yellow

Цветное меню для PoSh

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

Я прикреплен к красивому синему цвету окна PowerShell, когда вы запускаете его из одного из предустановленных ярлыков. Однако, если вы вручную запустите powershell.exe, вы не получаете эти цвета, вы получаете черный / белый : (

Это потому, что настройки по умолчанию выставлены на ярлык (.lnk) файл:

PowerShell shortcut colour settings

У меня есть запись "PowerShell Prompt Here" в контекстном меню Проводника, и я хотел бы запустить PowerShell, используя тот же хороший цвета как обычный ярлык; черный отстой, и это сбивает с толку, чтобы иметь разные цветные окна (особенно, когда у меня есть некоторые окна старой школы команды часто открываются, которые также черные!).

Я нашел две проблемы с попыткой установить это до сих пор:

  1. Настройка цвета из PowerShell, похоже, разрешает только определенные значения (перечисление ConsoleColor), ни одно из которых не соответствует ярлыку по умолчанию.
  2. Настройка цвета в PS Профиль заставляет только текст, написанный впоследствии, соблюдать новый цвет фона. Добавление " cls " вызывает неприятную вспышку исходного цвета при запуске.

есть ли способ запустить PowerShell из командной строки(т. е. что я могу встроить в реестр как элемент контекстного меню проводника), который будет использовать те же настройки, что и ярлык?

вот очень простой способ:

Пуск - > Выполнить " sysdm.cpl " - > дополнительно - > Переменные среды

прокрутите вниз через системные переменные, дважды щелкните PATHEXT

добавить .LNK; как показано ниже:

Path Extension

вы можете дополнительно настроить .lnk in C:\Windows\System32 на ваш вкус.

Пожалуйста, обратите внимание, что это будет работать только потому, что вы добавили .lnk к списку допустимых расширений и c:\windows\system32 является первым элементом в пути поиска (системная переменная PATH) по умолчанию.

это не будет настраивать консоль, если она запускается через cmd.исполняемый.

Я использую cmd.exe для вызова "пуск", который запустит powershell.lnk и передать текущий рабочий каталог в качестве аргумента. Кажется, еще не работает из адресной строки. Я должен был пойти домой 45 минут назад, но ваша проблема была весело решить! :)

бонусные баллы: вы можете передавать команды, отправленные в Powershell. Итак, если вы хотите изменить заголовок консоли Powershell атрибут:

При большом количестве выводимых в консоль данных, очень тяжело из считывать. В PowerShell имеется несколько командлетов позволяющитх выделить вывод цветом сделав его читабельнее. В первую очередь Write-Host, который воспринимает два основных параметра: цвет фона (-Backgroundcolor) и цвет текста (-Foregroundcolor).

PS> Get-Process | Write-Host -foregroundcolor DarkGreen -backgroundcolor white


В итоге получим такой список процессов.

Write-Host не различает параметры других командлетов, поэтому о цветовой раскраске вывода нужно заботиться самому. Вроде такого.

Кроме этого существуют специальные командлеты позволяющие привлечь внимание: Write-Warning и Write-Error.

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

PowerShell — это объектно-ориентированный программный движок и скриптовый язык с интерфейсом командной строки, предоставляющий широкие возможности для конфигурирования операционных систем семейства MS Windows. Он предлагает как чисто консольный интерфейс, так и полноценную среду разработки PowerShell ISE (Integrated Scripting Environment, встроенное скриптовое окружение) для скриптов.

Изображение Windows Power Shell ISE

Среда разработки Windows PowerShell ISE

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

Также существуют системные политики, ограничивающие выполнение скриптов. Можно проверить текущие параметры политики, введя команду Get-ExecutionPolicy . Результатом будет одно из следующих значений:

  • Restricted — выполнение скриптов запрещено. Стандартная конфигурация;
  • AllSigned — можно запускать скрипты, подписанные доверенным разработчиком; перед запуском скрипта PowerShell запросит у вас подтверждение;
  • RemoteSigned — можно запускать собственные скрипты или те, что подписаны доверенным разработчиком;
  • Unrestricted — можно запускать любые скрипты.

Для начала работы необходимо изменить настройку политики запуска на RemoteSigned, используя команду Set-ExecutionPolicy :

После выполнения команды можно будет запускать свои скрипты

Командлеты

Командлеты — это команды с предопределённой функцией, подобные условным операторам в языках программирования. У них есть несколько ключевых особенностей:

  • существуют системные, пользовательские и опциональные командлеты;
  • результатом выполнения командлета будет объект или массив объектов;
  • командлеты могут обрабатывать данные и передавать их другим командлетам с помощью конвейеров;
  • командлеты нечувствительны к регистру, так что нет никакой разницы между Get-ADUser , get-aduser и gEt-AdUsEr ;
  • в качестве разделителя используется символ ; .

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

  • Get-Process — отобразить текущие процессы, запущенные на компьютере;
  • Get-Service — отобразить список служб и их статус;
  • Get-Content — отобразить содержимое указанного файла, например Get-Content C:\Windows\System32\drivers\etc\hosts .

При необходимости список всех доступных командлетов можно вывести с помощью Get-Help-Category. Запомните эту команду — она крайне важна для тех, кто изучает PowerShell с нуля, так как помогает быстрее начать ориентироваться в его возможностях.

Команда Get-Help-Category в PowerShell

Результат выполнения команды Get-Help-Category

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

Параметры

У каждого командлета есть несколько параметров, определяющих его работу. PowerShell ISE автоматически предлагает все доступные параметры с отображением их типа. Например, Get-Service-NameW* выводит список служб, у которых имя начинается с W . Если вы забыли, какие параметры у введённого командлета, воспользуйтесь Get-Member .

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