Geek School Узнайте, как автоматизировать 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 и нажав enter.
Как вы можете видеть, 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 * сервис *
Конечно, вся эта информация может не пригодиться, но поверьте мне, найдите время и узнайте, как пользоваться справочной системой. Это всегда удобно, даже для продвинутых сценаристов, которые делают это годами.
Безопасность
Это не будет правильным введением без упоминания безопасности. Самое большое беспокойство за команду PowerShell - это то, что PowerShell становится последней и лучшей точкой атаки для сценаристов. Они разработали несколько мер безопасности, чтобы этого не произошло, поэтому давайте посмотрим на них.
Самая основная форма защиты происходит из-за того, что расширение файла PS1 (расширение, используемое для обозначения скрипта PowerShell) не зарегистрировано на хосте PowerShell, оно фактически зарегистрировано в Блокноте. Это означает, что если дважды щелкнуть файл, он откроется в блокноте вместо запуска.
Во-вторых, вы не можете запускать сценарии из оболочки, просто набрав имя сценария, вы должны указать полный путь к сценарию. Поэтому, если вы хотите запустить скрипт на диске C, вам нужно будет набрать:
C: \ runme.ps1
Или, если вы уже находитесь в корневом каталоге диска C, вы можете использовать следующее:
.\ runme.ps1
Наконец, в PowerShell есть что-то, называемое «Политики выполнения», которое не дает вам просто запустить любой старый скрипт. На самом деле, по умолчанию вы не можете запускать какие-либо сценарии, и вам нужно изменить политику выполнения, если вы хотите, чтобы им разрешалось их запускать. Есть 4 известных политики выполнения:
- ограниченный: Это конфигурация по умолчанию в PowerShell. Этот параметр означает, что ни один скрипт не может быть запущен независимо от его подписи. Единственное, что можно запустить в PowerShell с этим параметром, - это отдельная команда.
- AllSigned: Этот параметр позволяет запускать сценарии в PowerShell. Сценарий должен иметь связанную цифровую подпись от доверенного издателя. Перед запуском скриптов от доверенных издателей будет выдан запрос.
- RemoteSignedЭтот параметр позволяет запускать сценарии, но требует, чтобы файлы сценариев и конфигурации, загружаемые из Интернета, имели связанную цифровую подпись от надежного издателя. Скрипты, запускаемые с локального компьютера, не должны быть подписаны. Нет никаких подсказок перед запуском скрипта.
- неограниченный: Это позволяет запускать неподписанные сценарии, включая все сценарии и файлы конфигурации, загруженные из Интернета. Это будет включать в себя файлы из Outlook и Messenger. Риск здесь заключается в запуске сценариев без какой-либо подписи или безопасности. Мы рекомендовали, чтобы вы никогда не использовали эту настройку.
Чтобы увидеть, на что настроена текущая политика выполнения, откройте консоль PowerShell и введите:
Get-ExecutionPolicy
Для этого курса и большинства других обстоятельств лучше всего подходит Политика RemoteSigned, поэтому измените свою политику, используя следующие.
Примечание. Это необходимо сделать с помощью консоли PowerShell с повышенными правами..
Set-ExecutionPolicy RemoteSigned
Вот и все, на этот раз, ребята, увидимся завтра для еще большего удовольствия от PowerShell.
Отказ от ответственности: правильный термин для команды PowerShell - это командлет, и теперь мы будем использовать эту правильную терминологию. Просто было более уместно называть их командами для этого вступления..
Если у вас есть какие-либо вопросы, вы можете написать мне @taybgibb или оставить комментарий.