Школа Geek: узнайте, как автоматизировать Windows с помощью PowerShell

В этом выпуске Geek School мы поможем вам понять мощный язык сценариев PowerShell, встроенный прямо в Windows и чрезвычайно полезный для понимания в ИТ-среде.

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

Вступление

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

Обратите внимание, что эта серия основана на PowerShell 3, который поставляется с Windows 8 и Server 2012. Если вы используете Windows 7, пожалуйста, скачайте обновление PowerShell 3, прежде чем продолжить.

Встречайте Консоль и ISE

Существует два способа взаимодействия с PowerShell, Console и Integrated Scripting Environment – также известные как ISE. ISE значительно улучшился по сравнению с отвратительной версией, поставляемой с PowerShell 2, и ее можно открыть, нажав комбинацию клавиш Win + R, чтобы открыть окно запуска, затем введите powershell_ise и нажав клавишу ввода.

Как вы можете видеть, ISE имеет разделенное представление, так что вы можете быстро писать сценарии, все еще имея возможность видеть результат в нижней половине ISE. Нижняя половина ISE, где печатаются результаты вашего сценария, также может использоваться как приглашение REPL – очень похоже на командную строку. В ISE версии 3 наконец-то добавлена ​​поддержка intellisense как в панели скриптов, так и в интерактивной консоли.

Кроме того, вы можете взаимодействовать с PowerShell, используя консоль PowerShell, которую я буду использовать для большей части этой серии. Консоль PowerShell ведет себя так же, как и командная строка – вы просто вводите команды и выдает результаты. Чтобы открыть консоль Windows PowerShell, снова нажмите комбинацию клавиш Win + R, чтобы открыть окно выполнения, введите powershell и нажмите клавишу ввода.

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

Использование справочной системы

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

Обновление-Help

Поздравляем с выполнением вашей первой команды PowerShell! Правда в том, что команда Update-Help имеет гораздо больше параметров, чем просто ее запуск, и чтобы увидеть их, нам нужно просмотреть справку по команде. Чтобы просмотреть справку по команде, просто передайте имя команды, с которой вы хотите получить помощь, параметру Name команды Get-Help, например:

Get-Help –Name Update-Help

Вы, наверное, задаетесь вопросом, как интерпретировать весь этот текст в любом случае, я имею в виду, почему в разделе синтаксиса есть два больших объема информации и почему так много скобок повсюду? Перво-наперво: причина в том, что в разделе синтаксиса есть два блока информации, состоит в том, что они представляют разные способы выполнения команды. Они технически называются наборами параметров, и вы можете использовать только один за раз (вы не можете смешивать параметры из разных наборов). На приведенном выше снимке экрана видно, что в верхнем наборе параметров есть параметр SourcePath, а в нижнем – нет. Причина в том, что вы будете использовать верхний набор параметров (тот, который включает SourcePath), если вы обновляете файлы справки с другого компьютера в сети, который уже загрузил их, тогда как вам не нужно указывать исходный путь, если вы просто хотел получить последние файлы от Microsoft.

Чтобы ответить на второй вопрос, существует определенный синтаксис, за которым следуют файлы справки, и вот он:

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

В то время как вы должны научиться читать синтаксис файла справки, если вы когда-либо не уверены в том или ином параметре, просто добавьте –Full к концу команды get help и прокрутите вниз до раздела параметров, где он расскажет вам немного больше о каждом из них. параметр.

Get-Help -Name Update-Help -Full

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

Get-Help –Name * service *

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

Безопасность

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

Самая базовая форма защиты происходит из-за того, что расширение файла PS1 (расширение, используемое для обозначения скрипта PowerShell) не зарегистрировано на хосте PowerShell, оно фактически зарегистрировано в Блокноте. Это означает, что если дважды щелкнуть файл, он откроется в блокноте вместо запуска.

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

C: \ runme.ps1

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

. \ Runme.ps1

Наконец, в PowerShell есть нечто, называемое «Политики выполнения», которое не позволяет просто запустить любой старый скрипт. Фактически, по умолчанию вы не можете запускать какие-либо сценарии, и вам нужно изменить политику выполнения, если вы хотите, чтобы им разрешалось их запускать. Есть 4 известных политики выполнения:

  • Restricted . Это стандартная конфигурация в PowerShell. Этот параметр означает, что ни один скрипт не может быть запущен независимо от его подписи. Единственное, что можно запустить в PowerShell с этим параметром, – это отдельная команда.
  • AllSigned: . Этот параметр разрешает выполнение сценариев в PowerShell. Сценарий должен иметь связанную цифровую подпись от доверенного издателя. Перед запуском скриптов от доверенных издателей будет выдан запрос.
  • RemoteSigned . Этот параметр позволяет запускать сценарии, но требует, чтобы файлы сценариев и конфигурации, загружаемые из Интернета, имели связанную цифровую подпись от надежного издателя. Скрипты, запускаемые с локального компьютера, не требуют подписи. Нет никаких подсказок перед запуском скрипта.
  • Без ограничений . Это позволяет запускать неподписанные сценарии, включая все сценарии и файлы конфигурации, загруженные из Интернета. Это будет включать файлы из Outlook и Messenger. Риск здесь заключается в запуске сценариев без какой-либо подписи или безопасности. Мы рекомендуем, чтобы вы никогда не использовали эту настройку.

Чтобы увидеть, на что настроена текущая политика выполнения, откройте консоль PowerShell и введите:

Get-ExecutionPolicy

Для этого курса и большинства других обстоятельств лучше всего подходит Политика RemoteSigned, поэтому измените свою политику, используя следующее.

Примечание. Это необходимо сделать с помощью консоли PowerShell с повышенными правами.

Set-ExecutionPolicy RemoteSigned

Вот и все, на этот раз, ребята, увидимся завтра, чтобы еще больше пообщаться с PowerShell.

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

Если у вас есть какие-либо вопросы, вы можете написать мне @taybgibb или оставить комментарий.

Оцените статью
TutoryBird.Ru
Добавить комментарий