Какой шрифт в windows powershell

Обновлено: 08.07.2024

Описывает, как PowerShell использует кодировку символов для ввода и вывода строковых данных.

Подробное описание

Юникод — это мировой стандарт кодировки символов. Система использует Юникод исключительно для обработки символов и строк. Подробное описание всех аспектов Юникода см. в стандарте Юникода.

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

Следующие командлеты имеют параметр Encoding :

  • Microsoft.PowerShell.Management
    • Add-Content
    • Get-Content
    • Set-Content
    • Export-Clixml
    • Export-Csv
    • Export-PSSession
    • Format-Hex
    • Import-Csv
    • Out-File
    • Select-String
    • Send-MailMessage

    Пометка порядка байтов

    Символ-пометка (BOM) — это сигнатура в Юникоде в первых нескольких байтах файла или текстового потока, указывающих, какая кодировка Юникода используется для данных. Дополнительные сведения см. в документации по метке порядка байтов .

    в Windows PowerShell любая кодировка юникода, за исключением UTF7 , всегда создает спецификацию. PowerShell (V6 и более поздние версии) по умолчанию имеет значение utf8NoBOM для всех текстовых выходных данных.

    Для обеспечения оптимальной совместимости Избегайте использования спецификаций в файлах UTF-8. платформы unix и служебные программы unix-heritage, также используемые на платформах Windows, не поддерживают спецификации.

    Аналогичным образом UTF7 следует избегать кодирования. UTF-7 не является стандартной кодировкой Юникода и записывается без спецификации во всех версиях PowerShell.

    создание сценариев PowerShell на платформе, похожем на Unix, или использовании кросс-платформенного редактора на Windows, например Visual Studio Code, приводит к созданию файла, закодированного с помощью UTF8NoBOM . эти файлы прекрасно работают в PowerShell, но могут нарушить работу Windows PowerShell если файл содержит символы, отличные от Ascii.

    Если в скриптах необходимо использовать символы, отличные от ASCII, сохраните их как UTF-8 с помощью BOM. без спецификации Windows PowerShell правильно интерпретирует скрипт как закодированный в устаревшей кодовой странице ANSI. И наоборот, файлы, имеющие СПЕЦИФИКАЦИю UTF-8, могут быть проблематичными для платформ, подобных Unix. Многие средства UNIX, такие как cat ,, sed awk и некоторые редакторы, например, gedit не узнают, как обрабатывать спецификацию.

    Кодировка символов в Windows PowerShell

    В PowerShell 5,1 параметр Encoding поддерживает следующие значения:

    • Ascii Использует кодировку ASCII (7-разрядных).
    • BigEndianUnicode Использует UTF-16 с обратным порядком байтов.
    • BigEndianUTF32 Использует UTF-32 с обратным порядком байтов.
    • Byte Кодирует набор символов в последовательность байтов.
    • Default Использует кодировку, соответствующую активной кодовой странице системы (обычно ANSI).
    • Oem Использует кодировку, соответствующую текущей кодовой странице OEM системы.
    • String аналогичен Unicode .
    • Unicode Использует UTF-16 с прямым порядком байтов.
    • Unknown аналогичен Unicode .
    • UTF32 Использует UTF-32 с прямым порядком байтов.
    • UTF7 Использует UTF-7.
    • UTF8 Использует UTF-8 (с BOM).

    в общем случае Windows PowerShell по умолчанию использует кодировку юникод UTF-16le . однако кодировка по умолчанию, используемая командлетами в Windows PowerShell, не согласуется.

    При использовании любой кодировки Юникода, за исключением UTF7 , всегда создает спецификацию.

    Для командлетов, записывающих выходные данные в файлы:

    Out-File и операторы перенаправления > и >> создают UTF-16LE, который, в свою очередь, отличается от Set-Content и Add-Content .

    New-ModuleManifest а Export-CliXml также создавать файлы UTF-16LE.

    Если целевой файл пуст или не существует, Set-Content и Add-Content Используйте Default кодировку. Default — это кодировка, определяемая кодовой страницей устаревшей версии ANSI на языке активного системы.

    Export-Csv создает Ascii файлы, но использует другую кодировку при использовании параметра append (см. ниже).

    Export-PSSession по умолчанию создает файлы UTF-8 с BOM.

    New-Item -Type File -Value создает файл UTF-8 с кодировкой BOM.

    Send-MailMessage по Default умолчанию использует кодировку.

    Start-Transcript создает Utf8 файлы с помощью спецификации. При использовании параметра append кодировка может отличаться (см. ниже).

    Для команд, которые добавляют к существующему файлу:

    Out-File -Append и >> оператор перенаправления не пытается сопоставить кодировку содержимого существующего целевого файла. Вместо этого они используют кодировку по умолчанию, если не используется параметр Encoding . При добавлении содержимого необходимо использовать исходную кодировку файлов.

    При отсутствии явного параметра кодировки Add-Content обнаруживает существующую кодировку и автоматически применяет ее к новому содержимому. Если имеющееся содержимое не имеет BOM, Default используется кодировка ANSI. Поведение функции Add-Content аналогично в PowerShell (V6 и более поздних версиях), за исключением кодировки по умолчанию — Utf8 .

    Export-Csv -Append соответствует существующей кодировке, если целевой файл содержит СПЕЦИФИКАЦИю. В отсутствие спецификации используется Utf8 Кодировка.

    Start-Transcript -Append соответствует существующей кодировке файлов, включающих СПЕЦИФИКАЦИю. При отсутствии спецификации по умолчанию используется Ascii Кодировка. Такая кодировка может привести к утере данных или повреждению символов, если данные в записи содержат многобайтовые символы.

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

    Get-Content и Import-PowerShellDataFile использует Default кодировку ANSI. ANSI также используется механизмом PowerShell при чтении исходного кода из файлов.

    Import-Csv , Import-CliXml и Select-String предполагают Utf8 отсутствие спецификации.

    Кодировка символов в PowerShell

    В PowerShell (V6 и более поздних версий) параметр Encoding поддерживает следующие значения:

    • ascii : Использует кодировку для набора символов ASCII (7-разрядных).
    • bigendianunicode : Кодируется в формате UTF-16 с обратным порядком байтов.
    • oem : Использует кодировку по умолчанию для программ MS-DOS и консолей.
    • unicode : Кодируется в формате UTF-16 с прямым порядком байтов.
    • utf7 : Кодируется в формате UTF-7.
    • utf8 : Кодирует в формате UTF-8 (без спецификации).
    • utf8BOM : Кодирует в формате UTF-8 с меткой порядка байтов (BOM)
    • utf8NoBOM : Кодирует в формате UTF-8 без метки порядка байтов (BOM)
    • utf32 : Кодируется в формате UTF-32.

    По умолчанию PowerShell принимает значение utf8NoBOM для всех выходных данных.

    Изменение кодировки по умолчанию

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

    • $PSDefaultParameterValues
    • $OutputEncoding

    Дополнительные сведения см. в разделе about_Preference_Variables.

    Начиная с PowerShell 5,1, операторы перенаправления ( > и >> ) вызывают Out-File командлет. Таким образом, можно задать кодировку по умолчанию для них с помощью $PSDefaultParameterValues переменной предпочтений, как показано в следующем примере:

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

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

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

    Автоматическая переменная $OutputEncoding влияет на кодирование, используемое PowerShell для взаимодействия с внешними программами. Он не влияет на кодировку, которую операторы перенаправления вывода и командлеты PowerShell используют для сохранения в файлах.

    В процессе разработки очень часто возникает необходимость запустить из powershell скрипта консольное приложение. Что может быть проще?



    Изучим поведение консольных приложений при запуске их из командной строки, через PowerShell и через PowerShell ISE:



    В PowerShell ISE возникла проблема с кодировкой, так как ISE ожидает вывод в кодировке 1251. Воспользуемся гуглом и найдем два решения проблемы: c использованием [Console]::OutputEncoding и через powershell pipeline. Воспользуемся первым решением:



    В командной строке все хорошо, а вот в ISE ошибка. Exception setting «OutputEncoding»: «The handle is invalid.». Снова берем в руки гугл, и в первом же результате находим решение — надо запустить какое-нибудь консольное приложение для создания консоли. Ну что-же, попробуем.



    Все красиво, все работает. Кто читал мою прошлую заметку, обратил внимание, что WinRM приносит нам много острых впечатлений. Попробуем запустить тест через WinRM. Для запуска воспользуемся вот таким скриптом:



    Что-то пошло не так. Решение с созданием консоли не работает. Ранее мы находили два решения проблемы кодировки. Попробуем второй:



    В ISE и через WinRM решение работает, а вот через командную строку и shell — нет.
    Надо объединить эти два способа и проблема будет решена!



    Кажется, что проблема решена, но продолжим исследование и усложним наше консольное приложение, добавив в него вывод в stdError.





    Для тех что знает о существовании параметра -ErrorAction

    Какой будет результат выполнения такого скрипта?

    Вторым шагом доработаем скрипт удаленного запуска через WinRM, чтобы он не падал:




    Избавится от информации, которую добавляет powershell к stdErr мне так и не удалось.

    Надеюсь, что эта информация окажется полезной не только мне! :)

    update 1
    В некоторых сценариях использования создавалась дополнительная консоль, в которую выдавался результат выполнения скриптов. В скрипт test8.ps1 внесены исправления.

    update 2
    Так как у многих комментаторов статьи возникла путаница между понятиями набор символов (char set) и кодировка (encoding) хотел бы еще раз обратить внимание, что в статье решается проблема именно несоответствия кодировок консоли и вызываемого приложения.

    Как можно увидеть из скрипта test8.ps1, кодировка указывается в статическом свойстве [Console]::OutputEncoding, и никто не мешает указать в нем одну из кодировок семейства unicode:

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


    Изменение шрифта PowerShell в Windows 10


    Шаг 1: Нажмите клавиши Win + R, чтобы открыть диалоговое окно «Пуск».

    Шаг 2. Введите PowerShell и нажмите Enter, чтобы запустить Windows PowerShell.

    Шаг 3: Щелкните правой кнопкой мыши строку заголовка в верхней части окна консоли. Затем нажмите Свойства в меню.

    Шаг 4. В диалоговом окне «Свойства» перейдите на вкладку «Шрифт».

    Вы можете указать размер и шрифты, используемые в командной строке Windows PowerShell. Затем нажмите кнопку ОК.

    Шаг 5: На вкладке Макет. Установите флажок «Обтекание текстом при изменении размера».

    Затем нажмите OK, чтобы сохранить настройки.

    Ноябрьское обновление 2021:

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

    скачать

    Восстановите шрифт, который не изменяется в PowerShell.

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


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

    CCNA, веб-разработчик, ПК для устранения неполадок

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

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

    . Например, вам захочется увеличить размер буфера или поменять шрифт и цвет фона. Для такой настройки в 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.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    date

    10.09.2021

    directory

    PowerShell, Windows 10, Windows Server 2016, Групповые политики

    comments

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

    В этой статье мы рассмотрим способы установки шрифтов на компьютерах в домене Active Directory с помощью групповой политики и PowerShell скрипта. Данная инструкция протестирована на актуальных билдах Windows 10 20H2 и Windows Server 2016/2019.

    Установка шрифта через групповые политики

    Если вам нужно установить один-два новых шрифта, можно выполнить эту задачу с помощью возможностей Group Policy Preferences в GPO. Для установки шрифта нужно скопировать *.ttf файл на клиентский компьютер в каталог %WindowsDir%\Fonts\ и внести информацию о новом шрифте в ветку реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts.

    1. Скопируйте ttf файл шрифта в общую папку на файловом сервере (если шрифтов немного, можно использовать для хранения шрифтов каталог SYSVOL на контроллере домена);
    2. Запустите редактор доменных GPO ( gpmc.msc ), создайте новую политику GPO_InstallFonts и назначьте ее на OU с компьютерами;
    3. Перейдите в режим редактирования политики;
    4. С помощью Group Policy Preferences нужно создать правило для копирования файла шрифта из сетевой папки в каталог %WindowsDir%\Fonts\ на клиентах. Ранее мы показывали, как скопировать файл на компьютеры через GPO. Создайте политику по аналогии. Перейдите в Computer Configuration -> Preferences -> Windows Settings -> Files. Создайте политику с параметрами:

    Source: \\resource.loc\SYSVOL\resource.loc\scripts\Fonts\Roboto-Black.ttf
    Destination: %WindowsDir%\Fonts\Roboto-Black.ttf

    параметры шрифта для реестра

    Теперь нужно обновить настройки групповых политик на клиенте и проверить, что новый шрифт установился. В Windows 10 список установленных шрифтов доступен в новой панели управления (Settings -> Personalization -> Fonts).

    новый шрифт в панели управления windows 10

    Если шрифт не установился, проверьте назначена ли политика на компьютер с помощью утилиты gpresult . Далее следуйте обычной методике диагностики проблем с применением GPO к компьютерам.

    Установка шрифтов с помощью логон скрипта PowerShell

    Рассмотренные выше способ установки шрифтов через GPO удобно использовать, если нужно установить несколько шрифтов. Если вы хотите установить сразу множество новых файлов шрифтов, лучше воспользоваться PowerShell скриптом, т.к. создание для каждого шрифта отдельных параметров политики может быть утомительным.

    Следующий PowerShell скрипт установит все *.ttf и *.otf файлы шрифтов, которые хранятся в указанной сетевой папке. Дополнительно скрипт с помощью функции WriteLog записывает информацию о действиях в лог файл.

    function WriteLog
    Param ([string]$LogString)
    $Stamp = (Get-Date).toString("yyyy/MM/dd HH:mm:ss")
    $LogMessage = "$Stamp $LogString"
    Add-content $LogFile -value $LogMessage
    >
    $Logfile = "C:\windows\fontinstall.log"
    $SourceFolder = "\\resource.loc\SYSVOL\resource.loc\scripts\Fonts"
    Add-Type -AssemblyName System.Drawing
    $WindowsFonts = [System.Drawing.Text.PrivateFontCollection]::new()
    Get-ChildItem -Path $SourceFolder -Include *.ttf, *.otf -Recurse -File |
    Copy-Item -Destination "$env:SystemRoot\Fonts" -Force -Confirm:$false -PassThru |
    ForEach-Object WriteLog "Installing font file $_.Name"
    $WindowsFonts.AddFontFile($_.fullname)
    $RegistryValue = @Path = 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts'
    Name = $WindowsFonts.Families[-1].Name
    Value = $_.Fullname
    >
    $RemoveRegistry = "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts"
    Remove-ItemProperty -name $($WindowsFonts.Families[-1].Name) -path $RemoveRegistry
    New-ItemProperty @RegistryValue
    >

    powershell скрипт для установки множетсва шрифтов из сетевой папки в windows 10

    Сохраните данный PowerShell скрипт в PS1 файл и запускайте как логон скрипт через GPO.

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

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