Приложение. Ответы на вопросы обзора

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

Глава 1. Начало работы с PowerShell

  1. Используйте автоматическую $PSVersionTable переменную.
  2. Только если необходимо обойти контроль учетных записей пользователей (UAC) для задач, требующих повышения прав на локальном компьютере.
  3. Политика выполнения по умолчанию в клиентских системах Windows — Restricted, которая предотвращает выполнение скриптов.
  4. Используется Get-ExecutionPolicy для определения текущей политики выполнения.
  5. Используйте Set-ExecutionPolicy (например, Set-ExecutionPolicy -ExecutionPolicy RemoteSigned).

Глава 2 — Система справки

  1. Нет. Параметр Get-Service именован, а не позиционный.
  2. Get-Process имеет шесть наборов параметров.
  3. Используйте Get-Command -Noun EventLog.
  4. Используйте Get-Process -Name powershell.
  5. Запустите Update-Help (с повышенными правами администратора в Windows PowerShell), чтобы скачать и установить последнее содержимое справки.

Глава 3. Обнаружение объектов, свойств и методов

  1. Get-Process создает объект System.Diagnostics.Process.
  2. Передайте команду в Get-Member.
  3. Проверьте, имеет ли объект метод, выполняющий действие.
  4. Используйте параметр команды PassThru , если он имеет один.
  5. Выполните команду один раз и сохраните результаты в переменной, чтобы избежать многократного создания больших объемов выходных данных при создании прототипа.

Глава 4. One-Liners и конвейер

  1. Однострочник PowerShell является одним непрерывным пайплайном независимо от количества физических строк, которые он охватывает.
  2. Естественные разрывы линий могут возникать при символах, таких как вертикальная черта (|), запятая (,), квадратные скобки ([ ]), фигурные скобки ({ }), и круглые скобки (( )).
  3. Необходимо отфильтровать слева, чтобы повысить производительность и эффективность, уменьшая объем данных, передаваемых через конвейер.
  4. Команда может принимать входные данные конвейера по значению (по типу) или по имени свойства.
  5. Поскольку большинство содержимого в коллекция PowerShell предоставляется сообществом и может не быть проверено, его следует анализировать и тестировать до использования.

Глава 5. Форматирование, псевдонимы, поставщики, сравнение

  1. Поскольку командлеты форматирования создают форматные объекты, которые разрывают конвейер и не могут быть использованы большинством других команд.
  2. Используйте Get-Alias -Name %, чтобы определить фактический командлет.
  3. Так как псевдонимы снижают удобочитаемость и переносимость, что делает скрипты более сложными для других пользователей.
  4. Используйте Get-ChildItem -Path HKLM:\, HKCU:\ для перечисления разделов реестра в обоих ульях.
  5. Оператор -replace по умолчанию не чувствителен к регистру, тогда как метод .Replace() учитывает регистр.

Глава 6. Управление потоками

  1. ForEach-Object обрабатывает элементы по одному из потока (стриминг), а оператор foreach обрабатывает элементы из коллекции, которая уже загружена в память.
  2. while Цикл оценивает своё условие перед выполнением, поэтому он может вообще не выполняться, если условие является ложным, в отличие от do while и do until, которые выполняются по крайней мере один раз.
  3. break завершает цикл полностью, пропуская continue текущую итерацию и переходя к следующей.

Глава 7. Работа с WMI

  1. Командлеты WMI (например, Get-WmiObjectболее старые) и используют DCOM, а командлеты CIM (например, Get-CimInstance) являются более новыми и используют WSMan по умолчанию.
  2. WSMan (Windows удаленное управление).
  3. Сеансы CIM позволяют повторно использовать подключения, поддерживать альтернативные учетные данные, повысить производительность и упростить управление несколькими удаленными подключениями.
  4. Создайте параметр сеанса с New-CimSessionOption, например, для использования DCOM, и передайте его в New-CimSession, а затем используйте этот сеанс с Get-CimInstance.
  5. Используйте Remove-CimSession.

Глава 8 – Удаленное взаимодействие PowerShell

  1. Используйте Enable-PSRemoting.
  2. Используйте Enter-PSSession.
  3. Он позволяет использовать постоянный сеанс вместо указания имени компьютера и учетных данных с каждой командой.
  4. Да, вы можете использовать сеанс PowerShell (PSSession) в сценарии интерактивного удаленного взаимодействия.
  5. Локальное выполнение командлетов возвращает динамические объекты с методами, а удаленные команды возвращают десериализированные объекты без методов.

Глава 9. Функции

  1. Используйте Get-Verb.
  2. [CmdletBinding()] Добавьте атрибут в функцию.
  3. Когда функция вносит изменения в состояние системы или выполняет потенциально влияющие действия.
  4. Укажите -ErrorAction Stop.
  5. Чтобы задокументировать, как использовать функцию, чтобы вы и другие могли легко понять её и получить доступ к помощи с Get-Help.

Глава 10. Модули скриптов

  1. .psm1 Создайте файл и поместите в него функции.
  2. Использование утвержденных глаголов гарантирует согласованность, избегает предупреждений и улучшает обнаруживаемость.
  3. Используйте New-ModuleManifest.
  4. Используйте Export-ModuleMember в .psm1 файле или укажите функции в FunctionsToExport поле .psd1 файла.
  5. Модуль должен находиться в папке с именем модуля, расположенной по пути, указанному в $env:PSModulePath, и содержать соответствующий файл модуля (.psm1 или манифест).

Окончательные заметки

  • Эти ответы намеренно кратки для укрепления ключевых понятий.
  • Вернитесь к главам для более глубокого понимания.