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

Оглавление:

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

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

Видео: Школа Geek: Узнайте, как автоматизировать Windows с помощью PowerShell
Видео: Онлайн-презентация 23/8 - YouTube 2024, Май
Anonim
В этом выпуске Geek School мы будем помогать вам понять мощный язык сценариев PowerShell, который встроен прямо в Windows, и чрезвычайно полезен для понимания в ИТ-среде.
В этом выпуске Geek School мы будем помогать вам понять мощный язык сценариев PowerShell, который встроен прямо в Windows, и чрезвычайно полезен для понимания в ИТ-среде.

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

Вступление

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

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

Знакомьтесь с консолью и ISE

Существует два способа взаимодействия с PowerShell из коробки, Консоль и Интегрированная среда сценариев - также известная как ISE. ISE значительно улучшилась от отвратительной версии, поставляемой с PowerShell 2, и ее можно открыть, нажав комбинацию клавиш Win + R, чтобы открыть окно запуска, затем набрав powershell_ise и нажав enter.

Поскольку вы можете видеть, что ISE-спорт имеет разделенное представление, чтобы вы могли быстро писать сценарий, все еще имея возможность увидеть результат в нижней половине ISE. Нижняя половина ISE, где печатаются результаты вашего скрипта, также может использоваться как приглашение REPL, так же как и командная строка. V3 ISE наконец добавила поддержку intellisense как в панели сценариев, так и в интерактивной консоли.
Поскольку вы можете видеть, что ISE-спорт имеет разделенное представление, чтобы вы могли быстро писать сценарий, все еще имея возможность увидеть результат в нижней половине ISE. Нижняя половина ISE, где печатаются результаты вашего скрипта, также может использоваться как приглашение REPL, так же как и командная строка. V3 ISE наконец добавила поддержку intellisense как в панели сценариев, так и в интерактивной консоли.
Image
Image
В качестве альтернативы, вы можете взаимодействовать с PowerShell с помощью консоли PowerShell, что я и буду использовать для большей части этой серии. Консоль PowerShell ведет себя так же, как и в командной строке - вы просто вводите команды и выплевываете результаты. Чтобы открыть консоль Windows PowerShell, снова нажмите комбинацию клавиш Win + R, чтобы открыть окно запуска и введите «PowerShell», затем нажмите «Ввод».
В качестве альтернативы, вы можете взаимодействовать с PowerShell с помощью консоли PowerShell, что я и буду использовать для большей части этой серии. Консоль PowerShell ведет себя так же, как и в командной строке - вы просто вводите команды и выплевываете результаты. Чтобы открыть консоль Windows PowerShell, снова нажмите комбинацию клавиш Win + R, чтобы открыть окно запуска и введите «PowerShell», затем нажмите «Ввод».
Запросы REPL, подобные этому, являются удивительными для мгновенного удовлетворения: вы вводите команду и получаете результаты. Хотя Консоль не предлагает intellisense, она предлагает что-то, называемое табуляцией, которая работает практически так же - просто начните вводить команду и нажмите вкладку, чтобы перебирать возможные совпадения.
Запросы REPL, подобные этому, являются удивительными для мгновенного удовлетворения: вы вводите команду и получаете результаты. Хотя Консоль не предлагает intellisense, она предлагает что-то, называемое табуляцией, которая работает практически так же - просто начните вводить команду и нажмите вкладку, чтобы перебирать возможные совпадения.
Image
Image
Image
Image

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

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

Update-Help

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

Get-Help –Name Update-Help

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

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

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

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

Get-Help –Name Update-Help –Full

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

Get-Help –Name *service*

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

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

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

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

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

C:

unme.ps1

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

unme.ps1

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

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

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

Get-ExecutionPolicy

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

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

Set-ExecutionPolicy RemoteSigned

Это все на этот раз, люди, увидимся завтра для еще большего удовольствия от PowerShell.
Это все на этот раз, люди, увидимся завтра для еще большего удовольствия от PowerShell.

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

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

Рекомендуемые: