10,99 €
PowerShell® — это одновременно язык сценариев и командная оболочка, которая позволяет управлять системой и автоматизировать практически любую задачу. В книге «PowerShell для сисадминов» обладатель Microsoft MVP Адам Бертрам aka «the Automator» покажет, как использовать PowerShell так, чтобы у читателя наконец-то появилось время на игрушки, йогу и котиков. Вы научитесь: -Комбинировать команды, управлять потоком выполнения, обрабатывать ошибки, писать сценарии, запускать их удаленно и тестировать их с помощью фреймворка тестирования Pester. -Анализировать структурированные данные, такие как XML и JSON, работать с популярными сервисами (например Active Directory, Azure и Amazon Web Services), создавать системы мониторинга серверов. -Создавать и проектировать модули PowerShell. -Использовать PowerShell для удобной, полностью автоматизированной установки Windows. -Создавать лес Active Directory, имея лишь узел Hyper-V и несколько ISO-файлов. -Создавать бесчисленные веб- и SQL-серверы с помощью всего нескольких строк кода! Реальные примеры помогают преодолеть разрыв между теорией и работой в настоящей системе, а легкий авторский юмор упрощает чтение. Перестаньте полагаться на дорогое ПО и невнятные советы из сети!
Das E-Book können Sie in Legimi-Apps oder einer beliebigen App lesen, die das folgende Format unterstützen:
Seitenzahl: 366
Veröffentlichungsjahr: 2023
Научный редактор А. Логунов
Переводчик С. Черников
Художник В. Мостипан
Корректоры С. Беляева, М. Молчанова (Котова)
Верстка Л. Егорова
Адам Бертрам
PowerShell для сисадминов. — СПб.: Питер, 2021.
ISBN 978-5-4461-1732-1
© ООО Издательство "Питер", 2021
Все права защищены. Никакая часть данной книги не может быть воспроизведена в какой бы то ни было форме без письменного разрешения владельцев авторских прав.
Книга посвящается всем тем, кто ставит под сомнение статус-кво, противостоит корпоративной культуре в духе «мы всегда так поступали» и всегда предлагает лучшее решение задач.
Адам Бертрам (Adam Bertram) — опытный ИТ-специалист и эксперт в области интернет-бизнеса с 20-летним стажем. Предприниматель, ИТ-инфлюенсер, специалист Microsoft MVP, блогер, тренинг-менеджер и автор материалов по контент-маркетингу, сотрудничающий со многими ИТ-компаниями. Также Адам основал популярную платформу TechSnips для развития навыков ИТ-специалистов (techsnips.io).
Джеффри Хикс (Jeffry Hicks) — опытный ИТ-специалист с почти 30-летним стажем. Большую часть этого времени был консультантом по вопросам ИТ-инфраструктур и специализировался на серверных технологиях Microsoft с упором на автоматизацию и эффективность. Джеффри несколько раз получал награду Microsoft MVP. Он показал преимущества PowerShell и автоматизации ИТ-специалистам во всем мире, сейчас выступает в качестве независимого автора, преподавателя и консультанта.
Я не смог бы написать эту книгу и достичь всего того, что у меня есть, без поддержки моей жены Миранды. Время — это самый ценный ресурс, и благодаря ей у меня его больше, чем у многих других. Миранда — настоящий генеральный директор в нашей семье. Она каким-то образом справлялась с двумя дочерьми, поддерживала порядок в доме и кормила нас все те годы, пока я был с головой погружен в работу, стараясь обеспечивать семью. Я бы не смог добиться всего, что у меня есть, если бы она не поддерживала меня и наших детей.
Также хочу поблагодарить Джеффри Сновера (Jeffrey Snover) за создание языка сценариев PowerShell, который по-настоящему изменил мою жизнь. Благодарю Джеффа Хикса (Jeff Hicks), Дона Джонса (Don Jones) и Джейсона Хелмика (Jason Helmick) за то, что они вдохновили меня активно влиться в жизнь сообщества. Спасибо компании Microsoft за поддержку тех безумцев, которые стремятся достигнуть большего, с помощью программы MVP и других инициатив.
За время работы в сфере ИТ я занимал самые разные должности: находился на передовой в службе поддержки, выезжал к пользователям в качестве техника порой только для того, чтобы перезагрузить компьютер, обслуживал серверы в качестве системного администратора, разрабатывал решения будучи системным инженером, а также изучал разницу между маршрутизацией OSPF и RIP в качестве сетевого инженера.
И лишь открыв для себя PowerShell, я понял, как сильно могу увлечься определенной технологией. PowerShell изменил мою жизнь во многих отношениях и стал решающим этапом на моем карьерном пути. Этот язык помог мне стать незаменимым сотрудником на работе, знающим, как сэкономить бесчисленные рабочие часы моей команды, и принес мне мою первую шестизначную зарплату. Язык PowerShell настолько крут, что я решил поделиться им со всем миром. С тех пор в течение пяти лет подряд я получал престижную награду Microsoft MVP.
В этой книге я покажу вам, как использовать язык PowerShell для автоматизации тысяч задач, как создавать собственные инструменты вместо покупки готовых продуктов и как объединять в работе разные инструменты. Возможно, вы не станете активным членом сообщества PowerShell, но я гарантирую, что изучение этого языка даст вам именно те навыки, в которых нуждаются многие компании.
Язык Microsoft PowerShell, который когда-то назывался Monad (см. https://www.jsnover.com/Docs/MonadManifesto.pdf), в 2003 году позиционировался как более интуитивный способ автоматизации задач по сравнению с VBScript. Сейчас PowerShell представляет собой универсальный язык автоматизации, сценариев и разработки. Он был создан с целью стереть барьер между людьми, занимающимися сценариями, автоматизацией и операционной деятельностью. PowerShell должен был дать пользователям инструмент для автоматизации задач с помощью сценариев без необходимости изучать программирование. Это делает язык особенно полезным для системных администраторов, которым недостает опыта в разработке программного обеспечения. Если вы системный администратор, у которого не хватает времени на решение всех задач, то PowerShell может стать прекрасным союзником.
PowerShell сегодня — это повсеместно используемый кроссплатформенный язык написания сценариев и разработки с открытым исходным кодом. Вы можете использовать его не только для поддержки полностью настроенных ферм серверов, но и для создания текстового файла или настройки раздела реестра. Тысячи программных продуктов и сервисов используют PowerShell благодаря постоянно растущему уровню его внедрения среди ИТ-специалистов, разработчиков, инженеров DevOps, администраторов баз данных и системных инженеров.
Эта книга предназначена для ИТ-специалистов и системных администраторов, которым надоело постоянно использовать один и тот же интерфейс и выполнять одну и ту же задачу в пятисотый раз за этот год. Также она будет полезна для инженеров DevOps, которые испытывают затруднения с автоматизацией новых серверных сред, выполнением автоматических тестов или автоматизацией конвейера непрерывной интеграции / непрерывной доставки (CI/CD).
Не получится назвать отрасль, для которой PowerShell был бы полезен больше всего. Традиционная должность пользователя PowerShell в «магазине Windows» — системный администратор Microsoft, однако PowerShell хорошо вписывается в набор инструментов любого сотрудника в сфере ИТ. Если вы работаете в ИТ, но не считаете себя разработчиком, эта книга для вас.
В этой книге использован практический подход со множеством примеров и реальных кейсов. Вместо того чтобы рассказывать, что такое переменная, я вам ее покажу. Если вы ищете традиционный учебник, то эта книга не для вас.
Я не буду разбирать PowerShell по частям и рассматривать каждый элемент по отдельности, поскольку в жизни вы так делать не будете. Например, я не ожидаю, что вы знаете определение функции или цикла for — вместо этого я буду при любой удобной возможности так комбинировать элементы, чтобы дать вам наиболее целостное представление о задаче и способах ее решения.
Книга разделена на три части. Часть I «Основы» дает знания, необходимые новичкам в PowerShell для общения с опытными специалистами разработки. Если вы владеете PowerShell на среднем или более высоком уровне, то можете сразу перейти к главе 8.
В главах 1–7 рассматривается непосредственно язык PowerShell. Вы изучите основы, например, как найти помощь и новые команды, а также некоторые понятия программирования, общие для других языков, — переменные, объекты, функции, модули и основы обработки ошибок.
В главе 8 объясняется, как использовать инструменты удаленной работы PowerShell для подключения и выполнения команд на других компьютерах.
В главе 9 мы познакомимся с популярной платформой тестирования PowerShell под названием Pester, которую вы будете использовать на протяжении всей книги.
В части II «Автоматизация повседневных задач» вы примените знания, полученные в части I, чтобы начать автоматизировать часто встречающиеся задачи.
В главах 10–13 рассказывается, как анализировать структурированные данные, а также обращаться с инструментами, с которыми работают многие ИТ-администраторы, например с Active Directory, Azure и Amazon Web Services (AWS).
В главе 14 показано, как создать инструмент для инвентаризации серверов, который можно использовать в собственной среде.
В части III «Создаем свой модуль» вы сконцентрируетесь на создании единого модуля PowerShell под названием PowerLab, чтобы продемонстрировать возможности языка. Мы рассмотрим, каким должен быть хороший дизайн модуля, а также изучим передовые методы работы с функциями. Даже если вы считаете себя опытным разработчиком сценариев PowerShell, вы наверняка узнаете что-то новое из третьей части.
В главах 15–20 объясняется, как использовать PowerShell для автоматизации всей лабораторной или тестовой серверной среды на примере настройки виртуальных машин Hyper-V, настраивать операционные системы, а также разворачивать и настраивать серверы IIS и SQL.
Хочу верить, что эта книга поможет вам освоить PowerShell. Если вы новичок, я надеюсь, она придаст вам смелости приступить к автоматизации, а если вы опытный сценарист — то, скорее всего, узнаете новые для себя приемы.
Пора писать сценарии!
В локализированной версии PowerShell некоторые приведенные в книге строки вывода консоли переведены на русский язык. Однако большая часть пока что все равно существует только на английском, поэтому мы намеренно оставили оригинальные листинги. Если вы хотите узнать об истории выпусков модулей и командлетов PowerShell, ознакомьтесь с информацией по ссылке https://docs.microsoft.com/ru-ru/powershell/scripting/whats-new/cmdlet-versions?view=powershell-5.1.
Ваши замечания, предложения, вопросы отправляйте по адресу [email protected] (издательство «Питер», компьютерная редакция).
Мы будем рады узнать ваше мнение!
На веб-сайте издательства www.piter.com вы найдете подробную информацию о наших книгах.
Как гласит старая пословица, прежде чем начать ходить, сперва нужно научиться ползать. Это же правило работает и с PowerShell. В частях II и III этой книги вы узнаете, как можно создать несколько мощных инструментов. Но прежде вам нужно изучить основы языка. Если вы уже опытный пользователь PowerShell, можете пропустить первую часть — возможно, вы узнаете из нее что-то новое, однако эти крупицы знаний не стоят потраченного времени.
Если же вы новичок в PowerShell, то эта часть для вас. Мы изучим язык PowerShell и некоторые его конструкции, которые вы будете постоянно использовать. Мы рассмотрим все основные моменты, начиная от базовых понятий программирования, таких как переменные и функции, и заканчивая написанием сценариев, их удаленным запуском и тестированием с помощью пока неизвестной вам системы Pester. Поскольку в этой части мы лишь рассматриваем основы, то пока что не будем создавать множество инструментов — для этого предназначены части II и III. Здесь же мы рассмотрим небольшие примеры, чтобы лучше понять язык. Вы получите первое представление о том, на что способен PowerShell. Давайте начнем!
Само название PowerShell отсылает к двум вещам. Одна из них — оболочка командной строки, установленная по умолчанию во всех последних версиях Windows начиная с Windows 7. Недавно она появилась и на операционных системах Linux и macOS с помощью PowerShell Core. Вторая — это язык сценариев. Вместе они относятся к единой структуре, которую можно использовать для автоматизации всего — от одновременной перезагрузки ста серверов до создания полной системы автоматизации, управляющей целым дата-центром.
В первых главах этой книги мы будем использовать консоль PowerShell для знакомства с основами. После того как вы их освоите, мы перейдем к более сложным темам, включая написание сценариев, функций и пользовательских модулей.
В этой главе мы рассмотрим некоторые базовые команды, а также методы поиска и чтения справочной информации.
В этой книге мы используем версию PowerShell v5.1, которая уже встроена в Windows 10. В новых версиях PowerShell есть больше функций и меньше багов, но базовый синтаксис и функции PowerShell не претерпели значительных изменений со времен версии 2.
Чтобы открыть PowerShell в Windows 10, введите команду PowerShell в меню «Пуск». Вы сразу же увидите нужный вариант. При открытии приложения должна появиться синяя консоль и мигающий курсор, как показано на рис. 1.1.
Рис. 1.1. Консоль PowerShell
Мигающий курсор означает, что PowerShell готов принимать от вас команды. Обратите внимание, что ваша строка — приглашение ввода, начинающаяся с PS, вероятно, будет отличаться от моей, так как в ней указано ваше текущее местоположение в системе. Как видно из заголовка моей консоли, я щелкнул по значку PowerShell правой кнопкой мыши и запустил его от имени администратора. Это дает мне полные права, а запуск происходит в каталоге C:\Windows\system32\WindowsPowerShell\v1.0.
После открытия PowerShell можно приступать к его изучению. Если вы когда-либо использовали командную строку Windows, cmd.exe, для вас станет приятным сюрпризом то, что все команды, к которым вы привыкли (например, cd, dir и cls), также работают в PowerShell. По сути, эти «команды» среды DOS на самом деле являются не командами, а их псевдонимами, благодаря которым PowerShell и понимает эти команды. Но пока не обязательно вникать в эту разницу — просто считайте их своими друзьями из среды DOS!
Давайте попробуем ввести некоторые из этих команд. Если вы находитесь в строке приглашения PS> и хотите проверить содержимое определенного каталога, сначала перейдите в этот каталог с помощью команды cd (сокращение от change directory). С помощью этой команды вы перейдете в каталог Windows:
PS> cd .\Windows\
PS C:\Windows>
Использование автозаполнения
Обратите внимание, что в этой команде я указал каталог Windows с точкой и обратной косой чертой по обе стороны: .\Windows\. На самом деле, вам не нужно вводить все это, потому что в консоли PowerShell есть отличная функция автозаполнения, которая позволяет вам с помощью клавиши Tab просмотреть доступные команды.
Например, если вы наберете Get-, а затем нажмете клавишу Tab, среда начнет предлагать вам все команды, которые начинаются с Get-. С помощью многократного нажатия этой клавиши можно перебрать все возможные команды, а Shift+Tab возвращает вас назад. Автозаполнение можно использовать и в параметрах, о чем мы с вами поговорим в разделе «Изучаем команды PowerShell» на примере команды Get-Content с последующим нажатием Tab. В этом случае вместо прокрутки команд PowerShell начнет предлагать возможные параметры для команды Get-Content.
Оказавшись в папке C:\Windows, можно использовать команду dir для вывода списка содержимого вашего текущего каталога, как показано в листинге 1.1.
Листинг 1.1. Вывод содержимого текущего каталога с помощью команды dir
PS C:\Windows> dir
Directory: C:\Windows
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 3/18/2019 4:03 PM addins
d----- 8/9/2019 10:28 AM ADFS
d----- 7/24/2019 5:39 PM appcompat
d----- 8/19/2019 12:33 AM AppPatch
d----- 9/16/2019 10:25 AM AppReadiness
--пропуск--
С помощью команды cls можно очистить окно консоли. Если вы знакомы с командной строкой cmd.exe, попробуйте другие известные вам команды и посмотрите, как они ведут себя в PowerShell. Большинство из них работает — но не все. Если вам любопытно, какие команды cmd.exe работают в этой консоли, то после ее запуска можно ввести команду Get-Alias: она выведет вам многие старомодные команды cmd.exe, к которым вы привыкли.
PS> Get-Alias
Таким образом вы сможете увидеть все встроенные псевдонимы и сопоставляемые с ними команды PowerShell.
Как и почти во всех языках, в PowerShell есть команды — общий термин для именованных исполняемых выражений. Командой может быть что угодно — от устаревшего инструмента ping.exe до ранее упомянутой Get-Alias. Можно даже создавать собственные команды. Однако если вы попытаетесь использовать несуществующую команду, то получите печально известную ошибку с текстом красного цвета, как показано в листинге 1.2.
Листинг 1.2. При вводе неизвестной команды отображается ошибка
PS> foo
foo : The term 'foo' is not recognized as the name of a cmdlet, function,
script file, or operable program. Check the spelling of the name, or if a
path was included, verify that the path is correct and try again.
At line:1 char:1
+ foo
+ ~~~
+ CategoryInfo : ObjectNotFound: (foo:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
Чтобы увидеть список всех команд, которые PowerShell знает по умолчанию, можно выполнить команду Get-Command. Наверняка вы заметили общую закономерность: имена большинства команд сформированы по схеме глагол-существительное. Это уникальная черта PowerShell. Чтобы язык оставался как можно более интуитивно понятным, в Microsoft задали специальные правила образования имен команд. Хотя это не обязательный подход, его настоятельно рекомендуется соблюдать при создании собственных команд.
Команды PowerShell бывают нескольких видов: командлеты, функции, псевдонимы и иногда внешние сценарии. Большинство встроенных команд от Microsoft — это командлеты, которые обычно представляют собой команды из других языков, например C#. Выполнив команду Get-Command, как показано в листинге 1.3, вы увидите поле CommandType.
Листинг 1.3. Отображение типа команды Get-Alias
PS> Get-Command -Name Get-Alias
CommandType Name Version Source
----------- ---- ------- ------
Cmdlet Get-Alias 3.1.0.0 Microsoft.PowerShell.Utility
Функции — это команды, напротив, написанные на PowerShell. Вы будете писать функции для выполнения задач, а командлеты оставьте на долю разработчиков программного обеспечения. Командлеты и функции — это наиболее распространенные типы команд, с которыми вы будете работать в PowerShell.
Вы будете использовать команду Get-Command, чтобы исследовать изобилие командлетов и функций, имеющихся в PowerShell. Однако как вы, возможно, уже убедились, ввод Get-Command без параметров заставит вас сидеть и ждать, пока консоль не переберет все возможные варианты.
У многих команд в PowerShell есть параметры — значения, которые вы задаете (или передаете) команде, чтобы задать ее поведение. Например, у Get-Command есть параметры, позволяющие возвращать только определенные команды вместо полного списка. В выводе Get-Command вы могли заметить такие распространенные глаголы, как Get, Set, Update и Remove. Если вы решили, что все команды Getполучают информацию, а другие ее изменяют, то вы совершенно правы. PowerShell работает по принципу «что видишь, то и получишь». Команды имеют интуитивно понятные названия и обычно делают именно то, чего вы от них ожидаете.
Поскольку вы — новичок, вам точно не следует ничего менять в системе. Вам просто нужна информация из разных источников. С помощью параметра Verb в Get-Command можно сократить этот огромный список команд только до тех, которые, например, начинаются с Get. Для этого введите следующее в командной строке:
PS> Get-Command -Verb Get
Возможно, вы заметили, что команд все равно выводится многовато, поэтому можно сократить список результатов еще больше, добавив параметр Noun, и задать для него существительное Content, как показано в листинге 1.4.
Листинг 1.4. Вывод команд, содержащих глагол Get и существительное Content
PS> Get-Command -Verb Get -Noun Content
CommandType Name Version Source
----------- ---- ------- ------
Cmdlet Get-Content 3.1.0.0 Microsoft.PowerShell.Management
Если теперь выбирать стало практически не из чего, можно использовать только параметр Noun без параметра Verb, как показано в листинге 1.5.
Листинг 1.5. Вывод команд, содержащих существительное Content
PS> Get-Command -Noun Content
CommandType Name Version Source
----------- ---- ------- ------
Cmdlet Add-Content 3.1.0.0 Microsoft.PowerShell.Management
Cmdlet Clear-Content 3.1.0.0 Microsoft.PowerShell.Management
Cmdlet Get-Content 3.1.0.0 Microsoft.PowerShell.Management
Cmdlet Set-Content 3.1.0.0 Microsoft.PowerShell.Management
Как видно из этих примеров, Get-Command позволяет разделять глаголы и существительные. Если вы предпочитаете определить всю команду как единое целое, вы можете использовать параметр Name и указать полное имя команды, как показано в листинге 1.6.
Листинг 1.6. Поиск командлета Get-Content по имени команды
PS> Get-Command -Name Get-Content
CommandType Name Version Source
----------- ---- ------- ------
Cmdlet Get-Content 3.1.0.0 Microsoft.PowerShell.Management
Как я уже говорил ранее, у многих команд в PowerShell есть параметры, которые задают их поведение. С помощью справочной системы PowerShell можно узнать о том, какие параметры есть у команд.
Документация PowerShell ничуть не уникальна, но сам подход к интеграции документации и справочного содержимого в язык — это поистине произведение искусства. В этом разделе вы узнаете, как вывести в консоль справку по командам, получить больше информации о языке в разделах «О программе», а также обновлять документацию с помощью команды Update-Help.
Подобно команде man в Linux, в PowerShell есть команда help и командлет Get-Help. Если вам интересно узнать, что делает один из этих командлетов Content, можно передать его имя команде Get-Help, чтобы вывести стандартные разделы справки: SYNOPSIS, SYNTAX, DESCRIPTION, RELATEDLINKS и REMARKS. В этих разделах описываются функции команды и способы найти дополнительную информацию о ней и о связанных командах. В листинге 1.7 представлена документация по команде Add-Content.
Листинг 1.7. Страница справки, выводимая командой Add-Content
PS> Get-Help Add-Content
NAME
Add-Content
SYNOPSIS
Appends content, such as words or data, to a file.
--пропуск--
Передача только имени команды в Get-Help — это, конечно, практично, но в параметре Examples можно найти самую ценную информацию. Тут выводятся примеры реального использования команды в различных сценариях. Попробуйте ввести Get-Help<ИмяКоманды>-Examples: вы заметите, что почти у всех встроенных команд есть примеры, объясняющие их действие.
Сделаем это, например, для командлета Add-Content, как показано в листинге 1.8.
Листинг 1.8. Вывод примеров использования команды Add-Content
PS> Get-Help Add-Content -Examples
NAME
Add-Content
SYNOPSIS
Appends content, such as words or data, to a file.
-------------------------- EXAMPLE 1 --------------------------
C:\PS>Add-Content -Path *.txt -Exclude help* -Value "END"
Description
-----------
This command adds "END" to all text files in the current directory,
except for those with file names that begin with "help."
--пропуск--
Если вам нужна дополнительная информация, то у командлета Get-Help также есть параметры Details и Full, которые дадут вам подробное описание действий команды.
В системе PowerShell помимо информации об отдельных командах есть разделы About, представляющие собой фрагменты справки для более широких тем и конкретных команд. Например, в этой главе вы изучаете некоторые базовые команды PowerShell. В Microsoft создали раздел About, в котором дается общее объяснение этих команд. Чтобы открыть его, введите команду Get-Helpabout_Core_Commands, как показано в листинге 1.9.
Листинг 1.9. Справка по командам ядра PowerShell
PS> Get-Help about_Core_Commands
TOPIC
about_Core_Commands
SHORT DESCRIPTION
Lists the cmdlets that are designed for use with Windows PowerShell
providers.
LONG DESCRIPTION
Windows PowerShell includes a set of cmdlets that are specifically
designed to manage the items in the data stores that are exposed by Windows
PowerShell providers. You can use these cmdlets in the same ways to manage
all the different types of data that the providers make available to you.
For more information about providers, type "get-help about_providers".
For example, you can use the Get-ChildItem cmdlet to list the files in a
file system directory, the keys under a registry key, or the items that
are exposed by a provider that you write or download.
The following is a list of the Windows PowerShell cmdlets that are designed
for use with providers:
--пропуск--
Чтобы получить полный список справок About, используйте подстановочный знак для параметра Name. Подстановочный знак в PowerShell — это звездочка (*). Она может использоваться в качестве заполнителя для нуля или более символов. Вы можете использовать подстановочный знак с параметром Name команды Get-Help, как показано в листинге 1.10.
Листинг 1.10. Использование подстановочного знака в параметре Name команды Get-Help
PS> Get-Help -Name About*
Добавляя подстановочный знак к команде About, вы просите PowerShell искать все возможные темы, которые начинаются с About. Если совпадений окажется несколько, PowerShell выведет список с краткой информацией о каждом. Чтобы получить полную информацию по одному из вариантов, необходимо передать его напрямую в Get-Help, как было показано ранее в листинге 1.9.
Хотя у Get-Help есть параметр Name, можно передать аргумент параметра непосредственно команде, введя -Name, как показано в листинге 1.10. Это действие известно как использование позиционного параметра, который определяет передаваемое значение на основе его (как вы уже догадались) позиции в команде. Позиционные параметры — это клише, имеющееся во многих командах PowerShell и позволяющее вам меньше нажимать на клавиши.
Запуск PowerShell от имени администратора
Иногда приходится запускать консоль PowerShell от имени администратора. Обычно это происходит, когда вам нужно изменить файлы, значения реестра или что-то еще, что находится за пределами вашего профиля пользователя. Например, упомянутая ранее команда Update-Help меняет файлы системного уровня и не может быть корректно выполнена пользователем, не являющимся администратором.
Вы можете запустить PowerShell от имени администратора, щелкнув правой кнопкой мыши в Windows PowerShell и выбрав пункт «Запуск от имени администратора», как показано на рис. 1.2.
Рис. 1.2. Запуск PowerShell от имени администратора
Справочная система в PowerShell — отличная вещь для всех, кто хочет узнать больше о языке, но одно ключевое качество делает ее еще лучше: она динамична! Любая документация со временем устаревает. Она изначально поставляется с продуктом, в работе которого со временем появляются ошибки, выпускаются новые функции. При этом документация остается прежней. В PowerShell эта проблема решена с помощью обновляемой справки, которая позволяет встроенным и сторонним командлетам или функциям ссылаться на URI в интернете, где размещается актуальная документация. Просто введите команду Update-Help, и PowerShell начнет анализировать справку по вашей системе и сравнивать ее с различными онлайн-ресурсами.
Обратите внимание: хотя обновляемая справка включена во все встроенные командлеты PowerShell, для сторонних команд она не требуется. Кроме того, актуальность документации зависит от разработчика. PowerShell предоставляет разработчикам инструменты для создания более качественного справочного контента, но это не отменяет необходимости поддерживать актуальность репозитория, где хранятся файлы справки. Наконец, иногда при запуске команды Update-Help вы можете получать сообщение об ошибке, если расположение, в котором хранится справка, больше не доступно. Короче говоря, не стоит ожидать, что Update-Helpвсегда будет выдавать вам последнюю справку по каждой команде в PowerShell.
Из этой главы вы узнали о нескольких командах, которые помогут вам начать работу с PowerShell. Начиная что-то новое, вы не знаете заранее, чего вам пока недостает. Для самостоятельного изучения темы вам нужна крупица знаний. Освоив основы команд PowerShell и то, как можно использовать Get-Command и Get-Help, вы получили инструменты, необходимые для начала изучения PowerShell. Впереди вас ждет большое увлекательное путешествие!