Что такое powershell в windows 8. Что такое Windows PowerShell – как его запустить и использовать основные команды

Что такое powershell в windows 8. Что такое Windows PowerShell – как его запустить и использовать основные команды

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

Определение PowerShell

Начнем с того, что такое оболочка. Оболочка – это интерфейс, который позволяет воспользоваться какими-либо функциями операционной системы. Таким образом, PowerShell это оболочка, которую разработала компания Microsoft и предназначена для более автоматизированного выполнения задач. Данный инструмент создан на основе.NET и оболочки командной строки, а также языка сценариев.

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

Первая версия инструмента PowerShell появилась еще в 2006 году для Windows XP, Server 2003 и Vista. На данный момент последняя версия инструмента 4.0. Выпущена в 2013 году вместе с Windows 8.1.

Какие функции выполняет PowerShell?

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

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

В том случае, если вы являетесь администратором сети, то PowerShell сможет вам помочь в работе, например, с Active Directory. Также, стоит заметить, что утилита содержит более 100 команд. Это говорит о том, что она поможет решить вам большинство задач.

Запуск PowerShell на Windows 7

Для того, чтобы запустить PowerShell на данной операционной системе необходимо в поиске, где Пуск, ввести «».

По-другому инструмент можно открыть, если зайти в меню Пуск, все программы, стандартные и папка Windows PowerShell .

Запуск PowerShell на Windows 8.1

Для открытия PowerShell в Windows 8.1 необходимо в поиске ввести ключевое слово «», чтобы открыть поиск, нажмите Win+Q .

Другой способ открытия – через окно «Выполнить ». Нажимаем Win+R , открывается окно, в которое вы вводите .

Использование в повседневности

Данным инструментом пользуются многие IT-специалисты и администраторы и не зря, так как он дает большие возможности и снижает время, на выполнение каких-либо задач.

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

Чтобы сократить время работы до нескольких минут, можно воспользоваться PowerShell, с помощью которого, мы при помощи одного сценария соберем всю необходимую информацию и сохраним ее в отдельный документ.

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

Введение в интегрированную среду сценариев Windows PowerShellIntroducing the Windows PowerShell ISE

Интегрированная среда сценариев Windows PowerShell (ISE) является ведущим приложением для Windows PowerShell.The Windows PowerShell Integrated Scripting Environment (ISE) is a host application for Windows PowerShell.В интегрированной среде сценариев Windows PowerShell можно запускать команды, а также записывать, тестировать и выполнять отладку в одном графическом пользовательском интерфейсе на основе Windows с редактированием нескольких строк, заполнением нажатием клавиши TAB, раскраской синтаксических конструкций, выборочным выполнением, контекстной справкой и поддержкой письма справа налево.In Windows PowerShell ISE, you can run commands and write, test, and debug scripts in a single Windows-based graphic user interface with multiline editing, tab completion, syntax coloring, selective execution, context-sensitive help, and support for right-to-left languages.Пункты меню и сочетания клавиш можно использовать для выполнения большинства тех же задач, которые выполняются в Windows PowerShell.You can use menu items and keyboard shortcuts to perform many of the same tasks that you would perform in the Windows PowerShell console.Например, при отладке сценария в интегрированной среде сценариев Windows PowerShell, чтобы задать точку останова строки, щелкните правой кнопкой мыши строку кода, а затем нажмите кнопку Точка останова .For example, when you debug a script in the Windows PowerShell ISE, to set a line breakpoint in a script, right-click the line of code, and then click Toggle Breakpoint .

Новые функции в интегрированной среде сценариев Windows PowerShellTry these features in Windows PowerShell ISE.

  • Редактирование нескольких строк. Чтобы вставить пустую строку под текущей строкой в области команд, нажмите клавиши SHIFT+ВВОД.Multiline editing: To insert a blank line under the current line in the Command pane, press SHIFT+ENTER.
  • Чтобы запустить фрагмент сценария, выберите текст, который нужно запустить, и нажмите кнопку Выполнить сценарий .Selective execution: To run part of a script, select the text you want to run, and then click the Run Script button.Также можно нажать клавишу F5.Or, press F5.
  • Контекстная справка. Введите Invoke-Item и нажмите клавишу F1.Context-sensitive help: Type Invoke-Item , and then press F1.В разделе справки откроется файл справки по командлету Invoke-Item .The Help file opens to the Help topic for the Invoke-Item cmdlet.

Интегрированная среда сценариев Windows PowerShell позволяет настроить некоторые аспекты его представления.The Windows PowerShell ISE lets you customize some aspects of its appearance.Он также содержит собственный профиль Windows PowerShell, в котором можно хранить функции, псевдонимы, переменные и команды, используемые в интегрированной среде сценариев Windows PowerShell.It also has its own Windows PowerShell profile, where you can store functions, aliases, variables, and commands you use in the Windows PowerShell ISE.

Запуск интегрированной среды сценариев Windows PowerShellTo start the Windows PowerShell ISE

Выполните одно из следующих действий.Do one of the following:

  • Нажмите кнопку Пуск , откройте Все программы , Windows PowerShell V2 и щелкните Интегрированная среда сценариев Windows PowerShell .Click Start , point to All Programs , point to Windows PowerShell V2 , and then click Windows PowerShell ISE .
  • В Cmd.exe консоли Windows PowerShell или в поле "Выполнить" введите powershell_ise.exe .In the Windows PowerShell console Cmd.exe, or in the Run box, type, powershell_ise.exe .

Получение справки в интегрированной среде сценариев Windows PowerShellTo get Help in the Windows PowerShell ISE

В меню Справка выберите Справка Windows PowerShell .On the Help menu, click Windows PowerShell Help .Также можно нажать клавишу F1.Or, press F1.В открывшемся файле будет описана интегрированная среда сценариев Windows PowerShell и служба Windows PowerShell, в том числе вся справка, доступная с помощью командлета Get-Help.The file that opens describes Windows PowerShell ISE and Windows PowerShell, including all of the help available from the Get-Help cmdlet.

Топливо позволяет вашему автомобилю двигаться дольше, дальше и с комфортом. Так что если вы хотите получить от своего автомобиля максимум, на что он способен, ваш выбор – моторное топливо Shell V-Power . Shell V-Power способно увеличить мощность и обеспечить высочайшие рабочие характеристики вашего автомобиля.

Топливо Shell V-Power содержит специально разработанную формулу, которая предупреждает отложения продуктов сгорания на стенках двигателя вашего автомобиля, а также удаляет отложения, оставшиеся от использования других видов топлива. Постоянное применение Shell V-Power обеспечивает бесперебойную подачу топлива к сердцу двигателя и гарантирует необходимую мощность.

Разработка, повышающая мощность

Shell V-Power является топливом с высоким октановым числом (95), которое создано для максимального увеличения мощности современных двигателей. Этому способствует технология уменьшения трения (Friction Modification Technology — FMT) для Shell V-Power, разработанная для уменьшения трения между стенками цилиндра и поршневыми кольцами.

Речь идет о важном участке двигателя, на который очень трудно подавать смазку. Технология FMT была разработана, чтобы облегчить двигателю набор оборотов и более эффективно передавать энергию топлива на колеса. Именно технология FMT использовалась при разработке топлива для болидов Ferrari в сезоне 2006 года гонок «Формулы-1».

Топливо Shell V-Power, разработанное «Шелл», может использоваться в любом автомобиле, который создан для потребления неэтилированного бензина. Состав топлива рассчитан для обеспечения максимальной мощности двигателя с использованием сильных очищающих реагентов и технологии уменьшения трения (FMT). Очищающие компоненты созданы для контроля над образованием отложений в новых автомобилях и помощи в удалении существующих отложений продуктов сгорания в старых.

PowerShell

Это может помочь в восстановлении первоначальных рабочих характеристик вашего автомобиля. FMT несет массу преимуществ для работы двигателя автомобиля в результате уменьшения трения.

Вы сможете использовать Shell V-Power, если ваш мотоцикл потребляет неэтилированный бензин. Уникальный состав нашего топлива поможет защитить двигатель и увеличить скорость его реакции.

Виды топлива Shell помогают водителям достичь чрезвычайной свободы движения — это отличает их от всех остальных топлива. В чем уникальность Shell V-Power?

Эта технология разработана, чтобы облегчить двигателю набор оборотов и более эффективно передавать энергию топлива на колеса.

Давайте попробуем ответить на ряд актуальных вопросов про это топливо.

Что такое Shell V-Power?

Shell V-Power — это новая марка неэтилированного бензина, который реализуется на эксклюзивной основе концерном «Шелл» и обеспечивает высокие результаты его использования и, одновременно, защищает двигатель.

Чем отличается Shell V-Power от других видов бензина, которые реализуются на рынке России?

Shell V-Power является уникальным благодаря комбинации трех особенностей;
1. Октановое число 95 (октановое число бензина по исследовательскому методу)
2. Уникальные высокоэффективные способности к очистке помогают поддерживать двигатель в чистоте, восстанавливать «грязные» двигатели, а также достигать их наиболее благоприятного состояния, что позволяет обеспечить оптимальные результаты их эксплуатации.
3. Использование технологии уменьшения трения –технология, которую использует Ferrari в топливе, используемом в гонках «Формулы-1» в 2006 году.

Почему «Шелл» решил разрабатывать Shell V-Power?

Рыночные исследования показали, что автолюбители ожидают появления на рынке топлива, которое обеспечит беспроблемную езду и будет поддерживать двигатель в идеальном состоянии.

Что получат потребители Shell V-Power от технического сотрудничества между «Шелл» и Ferrari?

Компания Shell рассматривает автомобиль «Формулы-1» как современную мобильную лабораторию, при этом каждый структурный элемент болида регулируется и контролируется, что позволяет провести проверку новых видов топлива в наиболее сложных условиях. Тесное сотрудничество «шелловцев» с Ferrari в области скоростных гонок позволяет создать более совершенные виды топлива для автомобильных дорог.

Каким образом Shell V-Power защищает двигатель?

Состав Shell V-Power помогает удалить существующие отложения продуктов сгорания в двигателе и, таким образом, восстановить состояние двигателя и его производительность. В топливе также используется технология, которая обеспечивает уменьшение трения между жизненно важными частями двигателя.

Как разрабатывалось и испытывалось топливо Shell V-Power?

Были проведены интенсивные испытания Shell V-Power в лаборатории на стендах для испытания двигателей, оно также испытывалось на транспортных средствах.

Сколько времени требуется применять Shell V-Power, чтобы достичь заметного результата?

Shell V-Power улучшает рабочие характеристики двигателя с самой первой заправки.

Чем чаще вы используете Shell V-Power, тем эффективнее его воздействие на двигатель.

Могу ли я смешивать Shell V-Power с другими марками топлива?

Shell V-Power можно смешивать со всеми видами неэтилированного бензина, но свой полный потенциал топливо может проявить только при его постоянном использовании.

Подходит ли Shell V-Power для всех автомобилей?

Все транспортные средства, которые потребляют этилированный или неэтилированный бензин, могут испытать на себе положительное влияние Shell V-Power. На некоторых автомобилях, которые эксплуатируются достаточно долгое время, может потребоваться применение смазку седла клапана для использования Shell V-Power — это нужно для обеспечения защиты от усиленного износа седла клапана.

Подходит ли Shell V-Power для мотоциклов?

Shell V-Power отлично подходит для мотоциклов. Основываясь на опыте участия в мотогонках, компания Shell убеждена – используя Shell V-Power, вы получите незабываемые впечатления и опыт.

Каковы преимущества Shell V-Power для автомобиля?

Shell V-Power помогает улучшить рабочие характеристики современных автомобилей с самой первой заправки этим видом топлива путем увеличения КПД двигателя.

Так что, Shell V-Power полезно для любых автомобилей?

Хотя все автомобили имеют разные эксплуатационные характеристики, все они в определенной степени страдают от негативного влияния вредных отложений продуктов сгорания. Shell V-Power помогает устранить такие отложения. Уровень улучшений параметров рабочих характеристик вашего автомобиля зависит от того, какой конкретно автомобиль вы эксплуатируете.

Возможен результат на старых марках автомобилей или Shell V-Power только для современных двигателей?

Существует высокая вероятность того, что автомобили, которые длительный срок находятся в эксплуатации, накопили за время использования значительное количество отложений продуктов сгорания. Shell V-Power является мощным средством для очистки существующей грязи и сажи — это дает новую жизнь двигателю вашего автомобиля.

Нужно ли изменять настройки двигателя перед использованием Shell V-Power?

Как Shell V-Power влияет на окружающую среду?

Shell V-Power разработан в соответствии с последними нормативами в сфере охраны окружающей среды. Более того, Shell V-Power способен уменьшить отложения в двигателе, что позволяет уменьшить уровень выбросов по сравнению с обычным неэтилированным бензином.

Windows PowerShell command line syntax

Parameters Command Line Parameters param() and $args Pipelines Pass objects down the pipeline. Objects Working with objects. Looping commands: Do, foreach, ForEach-Object, Switch, WhileDate&Time Date and Time Format patterns (DateTimeFormatInfo) Redirection Spool output to a file. Statements Looping, If-Then-Else. Tab Completion for Cmdlets, Filenames & Variables. Transaction Manage transactions.

Create Variables and assign values — basic Operators: + — / = Arrays and Hash tables. Automatic variables ($_, $Args etc) Preference variables ($DebugPreference etc) Ref vars Pass a reference variable to a function.
Environment variables ($Env:) & PowerShell providers.

Evaluate expressions

Escape chars, delimiters, Here Strings and "quotes". Comparison -like, -lt, -gt, -eq, -ne, -match DataTypes PowerShell data types. Methods ToUpper(), PadRight(), Split(), Substring(), Replace() etc. Operators Format strings and arrays @() -f $() :: &Concat Several methods to combine strings together. Regular Expressions Search and/or Replace. Replace Basic Search/Replace in strings and files. Wildcards Match multiple items.

Functions and Modules

Scriptblock A collection of statements: { … } Functions and Filters Write a named block of code. Function Input Processing (Begin..Process..End) Advanced Functions a template to copy. Modules Combine functions into a module for easy re-use.

Scripts and Functions

Base36 Convert numbers to/from base 36. CD — Jump to the previous working directory. DelOlder Delete files and folders older than n days. DisplayRes Get the display resolution of multiple computers. Open Here Open PowerShell from any folder. Check-Backups Check multiple locations for files that have changed. Get-Bandwidth List the average IO for a Network interface. Get-DiskSpace List the free disk space for multiple computers. Get-OSVersion Get the OS and Service pack level of a remote machine (inventory). Get-Programs List Installed Software (Add/Remove programs) Get-Uptime Get the system Uptime for one or more computers. LoggedOn Find who is logged into a machine. LastLogon Find when an account last logged in. MsgBox A function to display messages in a popup message box. Password expiry Reminder email. pshInfo List Ram, Disk Space, Service pack, Uptime. psp PowerShell Ping. #requires Prevent a script from running without a required element. ServiceStatus List installed services and service status. set-eol Change the line endings (CR/LF) of a text file. StampMe Rename a file with the current Date/Time. Touch Change the date/time of a file/folder.

Reference / How to

Run a script How to run a PowerShell script.

Windows PowerShell: что это за программа

Elevate Run with elevated permissions (As Admin). Comments How to comment your scripts. Circular Find circular nested AD groups. Event IDs The most common Windows Event IDs. Keyboard Keyboard shortcuts. LDAP Lightweight Directory Access Protocol (LDAP) queries PS verbs Naming convention (Technet) $Profile The PowerShell startup $Profile. Prompt Configure the PowerShell prompt. PS Remoting Run PowerShell on remote machines. Template Starting point for new PowerShell scripts. Verbs MSDN — Approved Verbs for PowerShell Version 4.0 Windows 7/8 PowerShell Cmdlets.

Discussion forum
Links to other websites, books etc…

Для многих пользователей, этот неотъемлемый элемент ОС Windows, представляется настоящей загадкой. Открывая его, они видят список из непонятных символов, разобраться в котором для непосвященных не представляется возможным. Но не стоит его недооценивать, это программа, несущая важную управленческую функцию, способна упростить работу с ПК, в чем бы она ни выражалась.

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

Краткий обзор программы

По сути, это усовершенствованная версия MS-DOS – старейшей дисковой операционной системы от компании Microsoft, выпущенной еще в середине 80-х гг. прошлого века. Она содержала в себе приложения, с функцией интерпретаторов , далеких от совершенства, умевших задавать несколько простых команд.

Разработчики неоднократно пытались компенсировать недостатки MS-DOS дополнительными компонентами для запуска сценария, такими как MS Script Host, с языками вроде Jscript, но это решало проблему лишь частично. В 2003 г. началась разработка программы способной заменить старую оболочку, получившую название Monad, известную сейчас как PowerShell. Хотя его впервые запустили в конце 2006 года и включили в ОС Windows XP, в завершенном виде он вышел только спустя 10 лет непрерывных доработок, в 2016 г. когда получил открытый исходный код. PowerShell широко используется в Windows 7, 8 и 10.

Windows PowerShell – что это такое

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

Таким образом, PowerShell – это не что иное, как скриптовый язык, созданный на платформе.NET для выполнения задач по части управления файлами, сохраненными на системном диске, запущенными процессами и службами. Кроме того, ему подчинено управление аккаунтами в сети Интернет и любыми настройками, от системных, до настроек функциональности отдельных приложений. Но сам по себе PowerShell только оболочка, основные функции выполняют сопутствующие элементы, наполняющие ее. Далее постараемся разобраться в PowerShell, чтобы работа с утилитой стала понятна даже «чайникам».

Командлеты

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

Это несколько отличается от запросов, вводимых в поисковой строке браузера, но имеет те же принципы . В оболочке содержится сохраненная коллекция из сотен таких команд, отвечающих за определенные задачи. Формируются командлеты по обычному принципу Глагол + Существительное, что отражает их назначение.

Конвейер

Второй по значимости элемент (тип команд) PowerShell, передающий выходные данные одних командлетов во входные данные других, служит как бы посредником между ними. Конвейер служит, главным образом, для передачи и возврата не только командлетов, но и любых других объектов. Способен он выполнять и более сложные и ответственные задачи. А наиболее важно то, что для этого не требуется писать сложные алгоритмы и сценарии.

Разработчики Microsoft при создании конвейера, использовали как наглядный пример аналог, задействованный в Linux, но не копировали его, а сделали его максимально удобным и функциональным . Если сравнивать их, общая между ними только характеристика функций, выраженная в фактически непрерывном потоке данных, содержащих миллионы символов.

Сценарии

Сценарии — менее значимые типы команд в PowerShell, являющие собой блоки кодов, сохраняющиеся в отдельном от остальных файле, но так же поддерживающие расширение PS1. Главным их преимуществом служит то, что сохраненные коды не нужно каждый раз набирать в ручном режиме. Не имеет значения, в каком из текстовых редакторов они пишутся, хоть в Word, хоть Paint, принципиально только придерживаться установленного расширения.

В самой оболочке присутствует интегрированная в нее среда для сценариев, воспользовавшись которой можно еще больше упростить их написание . Для их создания, установлены правила оформления текста, перед именем используется символ «$», путь к сохраненному файлу заключается в фигурные скобки, а обращение к свойствам происходит с использованием «.» впереди. Сценарии дополняются аргументами с использованием круглых скобок и комментариями с оформлением символами «#».

Дополнения

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

Как запустить PowerShell

Дополнительное удобство программы в том, что запускается PowerShell при помощи разных способов, отличающихся в техническом плане, но идентично для всех версий Виндовс, в том числе Windows 10. Благодаря этому, каждый подбирает индивидуальный подход, в зависимости от ситуации. Существует несколько способов запуска.

При помощи «Поиска»

Для этого потребуется кликнуть по соответствующему значку, размещенному на панели задач , или применить комбинацию клавиш «Win + S ». В отрывшемся окне, в поисковой строке набрать «powershell», а в выданном результате выбрать «Классическое предложение». Можно также вызвать контекстное меню правым кликом, где воспользоваться «Запуском от имени администратора».

Через меню «Пуск»

Кликом по кнопке «Пуск» открыть список приложений, в сортированной группе озаглавленной «W» выбрать папку с программой. Развернуть ее и кликнуть по приложению в верхней строчке. Здесь также в виде варианта, можно вызвать контекстное меню правой кнопкой мыши и запустить «от имени администратора».

С использованием сочетания клавиш

Этот способ подразумевает предварительное действие, заключающееся в замене командной строки оболочкой «Widows PowerShell» с функцией «Меню Win + X». После этого войти в соответствующее меню сочетанием клавиш, или через контекстное меню правым кликом по кнопке «Пуск», где выбрать нужный пункт в представленном списке.

Через диалог «Выполнить»

Один из простейших способов, с открытием диалогового окна «Выполнить ». Для его вызова, применить сочетание клавиш «Win + R», в строке «Открыть» ввести команду с именем программы. Для ее запуска нажать на клавишу «Enter» или кнопку «Ок» на панели окна.

С помощью «Диспетчера задач»

Чтобы открыть диспетчер, применить сочетание клавиш «Ctrl + Shift + Esc », в открывшемся окне, во вкладке «Файл» выбрать вариант «Запуска новой задачи ». В новом окне, напротив строки «Открыть», вписать «powershell» и нажать на «Enter». В случае если требуется создание задачи от имени администратора, отметить галочкой соответствующую опцию и подтвердить нажатием по кнопке «Ок».

Через «Проводник»

После его открытия, потребуется указать имя папки или диска, где будет запускаться программа. На вкладке «Файл» выбрать вариант «Запустить Widows PowerShell» и нажать на нужный пункт.

Через системную папку

В поисковой строке ввести адрес программы: «C:\Windows\System32\WindowsPowerShell\v1.0». В открывшемся списке выбрать папку «powershell.exe» и открыть ее двойным левым кликом. Чтобы упростить процесс в будущем, можно создать ярлык файла и закрепить в любом удобном месте: на панели задач, в меню «Пуск», или рабочем столе. При необходимости запуск оболочки будет осуществляться двойным кликом по иконке.

Процедура использования утилиты

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

На простом примере, команда, задающаяся как «Get-Help» — это своеобразный справочник утилиты, предоставляющий при вводе общую информацию. Если нужна справка по определенному процессу , например о подключенных дисках, нужно задать команду – «Get-Help Get-PSDrive», и так по любому вопросу, меняя только имя командлета. Для каких либо действий, к примеру, очистки корзины от файлового мусора, обычно используется «Clear-RecycleBin», применяющийся и для более важных задач в обслуживании ПК и для написания скриптов. Но отвечает он и за такой простой процесс, как очистка системных корзин. Прежде нужно указать диск, подлежащий очистке, по принципу: «Clear-RecycleBin C:» для подтверждения действия ввести символ «Y» и нажать на «Enter».

Работа с конвейером

В работе, конвейер чрезвычайно прост и удобен, чем особенно выделяется на фоне других типов команд. Например, если выводить результат Get-Process, содержащий информацию об активных процессах на ПК в командлет Soft-Object, он отсортирует их по дескрипторам. Переведя полученные значения в Where-Object, произойдет фильтрация этих процессов по заданному параметру, к примеру, наименьшего объема страничной памяти. А если и этот результат вывести в Select-Object, он выделит лишь первые 10 процессов, с учетом числа дескрипторов.

Или еще один простой пример, применяющийся для получения информации о самых тяжеловесных файлах, хранящихся на системном диске: Команда Get-ChildItem, открывает каталог для выбора объекта, Sort-Object отсортирует выбранный объект, а Select-Object укажет его нужные свойства.

Работа со сценарием

При создании алгоритмов, часто применяется Windows PowerShell ISE, специально созданный механизм, в том числе и для использования сценариев. В нем, под названием «Безымянный 1.ps1» вводится тело кода . Разберем на простом примере: «WMID WebMoney» в названии задать условно «wmid», сохранить файл в корне диска С. Для запуска потребуется войти в каталог, применяя команду «cd C:\» имя файла должно значиться в таком ключе: «.\wmid». Примечательно, что сценарии запускаются и из командной строки ОС, но для этого нужно изменить путь к нему: «powershell.exe C:\ wmid.ps1». При этом важно помнить, что выполнять сценарии по умолчанию запрещается, для получения разрешения на такие действия, следует задать команду Set-ExecutionPolicy.

Самые полезные командлеты PowerShell

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

Наиболее полезные в применении:

  • Get-Help – справочник по назначению командлетов и общим свойствам оболочки;
  • Update-Help — загрузка и установка обновленных справочных данных;
  • Get-Command – поисковик требуемых команд, с авто заполнением строки;
  • Get-Alias – отражает установленные псевдонимы, общим списком или с конкретикой;
  • Get-PSDrive – представляет запущенные диски и происходящие на них процессы;
  • Install-WindowsFeature – ролевой и компонентный установщик;
  • Uninstall-WindowsFeature – ролевой и компонентный деинсталлятор;
  • Get-History – отвечает за возвращение командных списков, выполненных при входе.
  • $hversion – возвращает версию утилиты

Переменные :

  • Get-Variable – показывает списком все переменные с учетом их значений;
  • New-Variable – используется для настройки ново созданных переменных;
  • Set-Variable – устанавливает новые значения, если они не значатся в списке;
  • Clear-Variable – деинсталлятор содержания, сохраняющий образ;
  • Remove-Variable — деинсталлятор командлетов и их составляющих.

Форматирование:

  • Format-List – расширенный справочник;
  • Format-Table – выводит таблицу результатов отдельных команд;
  • Format-Wide — расширенная таблица по результатам, со свойствами отдельных объектов.

Интернет:

  • Enable-NetAdapter – для включения адаптера;
  • Rename-NetAdapter – задает новое имя и представление;
  • Restart-NetAdapter – используется для перезапуска;
  • Get-NetIPAddress – предоставляет данные по конфигурации прокси-сервера;
  • Set-NetIPAddress – задает новую конфигурацию прокси-серверу;
  • New-NetIPAddress – занимается созданием и настройкой прокси-сервера;
  • Remove-NetIPAddress – деинсталлятор прокси-сервера;
  • New-NetRoute – используется для внесения дополнительных записей;
  • Get-NetIPv4Protocol — предоставляет данные по протоколу IPv4;
  • Get-NetIPInterface — отражает свойства и характеристики веб-интерфейса IP.

Элементы:

  • Get-Item — принимает элементы по заданному пути;
  • Move-Item – для перемещения элементов по другим папкам;
  • New-Item – используется для создания и оформления;
  • Remove-Item – деинсталлятор отмеченных элементов;
  • Get-Location – показывает местонахождение в настоящем времени.

Фоновые задания:

  • Start-Job – выполняет запуск;
  • Stop-Job – останавливает работу;
  • Get-Job – открывает список;
  • Receive-Job – предоставляет информацию о результатах;
  • Remove-Job – деинсталлятор фоновых задач.

Объекты:

  • Measure-Object – используется для расчета числовых агрегирующих параметров;
  • Select-Object – для выбора с указанием конкретных свойств;
  • Where-Object – отражает условия касательно выборки по значению и свойствам.

Службы и процессы:

  • Get-Process – показывает информацию об активных процессах ПК;
  • Start-Process – производит запуск на ПК;
  • Stop-Process — прекращает работу избранных;
  • Get-Service – предоставляет данные об активных службах;
  • Restart-Service – осуществляет перезапуск;
  • Start-Service – используется для подключения выбранных;
  • Stop-Service – ставит на паузу процесс;
  • Set-Service – изменяет свойства служб и режим подключения.

Компьютер и система:

  • Restart-Computer – используется для перезапуска ОС;
  • Checkpoint-Computer — для создания системной восстановительной копии для ПК;
  • Restore-Computer – отвечает за запуск восстановленной системы;
  • Remove-Computer — деинсталлирует локальный ПК из доменного имени;
  • Clear-EventLog – очищает список записей в журнале.

Контент:


Что такое PowerShell ISE

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

Удобство работы создает цветовая подсветка синтаксиса , что существенно облегчает тестирование на предмет выявления ошибок и несоответствий в кодах. При помощи среды может копировать и менять значительные фрагменты в кодах, запускать отдельные части скриптов. Отмечается, что ISE намного превосходит консоли самой Пауэер Шелл, и вполне способна стать ее заменой.

Удаление программы

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

Хотя стоит заметить, что иногда необходимо удалить Windows PowerShell 1.0, поскольку операционная система может не обновляться из-за этого элемента. Сделать это можно так:

  • Запускаем системный поиск и вводим appwiz.cpl.
  • В окне выбираем – Просмотр установленных обновлений.
  • Ищем нужный компонент в списке обновлений, обычно это KB928439 и удаляем его.

Windows PowerShell, даже с большой натяжкой нельзя назвать простой и доступной программой, она сложная для понимания, и освоить ее за короткий промежуток времени не получится. Но учитывая тот факт, что создавалась она отнюдь не для программистов, а для начинающих пользователей, не настолько она непостижима, как может показаться. Очевидным преимуществом оболочки является ее удобство и автоматизированный процесс, а все что потребуется – только вникнуть в тонкости.

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

Наиболее распространенным средством «экономии времени и избавления от головной боли» стала запись и последовательное пакетное исполнение необходимых операций - исполнение сценариев или скриптов в интерпретаторе команд операционной системы.

Попытки улучшить состояние дел в области управления и администрирования Windows с помощью командного интерфейса привели не к адаптации чужеродного для системы языка сценариев или созданию супер-утилиты, работающей в DOS, а к появлению PowerShell – новой командной оболочки.

В составе MS-DOS и Windows 9x таким интерпретатором, позволяющим выполнять обработку пакетных файлов (bat-файлов), являлся command.com , впоследствии (начиная с выхода Windows NT) замененный cmd.exe . Позднее появился Windows Script Host.

Windows Script Host (WSH; первоначально назывался Windows Scripting Host) – один из элементов Microsoft Windows, как часть операционной системы он начал поставляться, начиная с Windows 98. Позволяет запускать сценарии, написанные с помощью скриптовых языков VBScript /JScript и, как дополнение, некоторых других. Сценарии, исполняемые в WSH, предоставляют гораздо больше возможностей, чем использование командных (bat- и cmd-) файлов. Исполнение возможно в графической среде (wscript.exe) или в консоли (cscript.exe).

Тем не менее, процесс написания и выполнения сценариев в ОС Windows не развит так хорошо, как, например, в UNIX-системах. Одна из причин этого – сам графический интерфейс ОС Windows, видимо и сделавший ее столь популярной среди обычных, не корпоративных пользователей. Возможность управления некоторыми элементами среды Windows с помощью графического интерфейса не всегда можно реализовать с помощью системных утилит, выполняемых в командной строке. С другой стороны, возможности каких-то системных программ, поставляемых в составе Windows, не всегда представлены в GUI. К тому же интерпретаторы в Windows имеют довольно ограниченный набор команд, «зашитых» в саму оболочку. Windows Script Host не интегрирован с командной строкой и сам по себе представляет потенциальную опасность – его использует достаточно большое количество вредоносных программ.

Попытки улучшить состояние дел в области управления и администрирования Windows с помощью командного интерфейса привели не к адаптации чужеродного для системы языка сценариев или созданию супер-утилиты, работающей в DOS, а к появлению Windows PowerShell – новой командной оболочки. По некоторым данным, ее появление связано с использованием платформы.NET при создании командного интерфейса для WMI. В данный момент PowerShell является отдельным приложением, который можно установить на любую систему, использующую платформу .Net 2.0 (Windows XP, Vista, Server 2003). Начиная с Server 2008, PowerShell будет являться встроенным компонентом Windows-систем. Если же у вас не Server 2008, для знакомства с PowerShell предварительно необходимо будет его загрузить (возможно, вам понадобится и установка.NET).

Знакомство
Запустив PowerShell, вы не обнаружите поначалу никаких различий между ним и cmd.exe (разве что цвет фона окна у PowerShell по умолчанию - синий). Более того, вскоре вы обнаружите, что операции копирования/вставки в PowerShell реализованы также безобразно, как и в cmd.exe. Но первое впечатление о схожести этих оболочек, скажем так, не совсем соответствует действительности.

То обстоятельство, что работа оболочки PowerShell основана на.NET Framework, является главным ее отличием от предыдущих командных оболочек Windows. PowerShell полностью объектно-ориентирована. Результатом выполнения команды в PowerShell является не некий «текст сам по себе», а объект платформы.NET. Этот объект представляет собой собственно данные и имеет набор присущих ему свойств и методов.

Внутренние команды (точнее, командные структуры) для работы с объектами в PowerShell называются командлетами . Для них придумано специальное единообразное именование в виде комбинации действие-цель. Например, для получения данных используется действие “set”, для получения – “get”, для вывода - “out” и т. д. Цель – это тип объекта, к которому будет применено действие. Командлеты можно рассматривать как мини-программы, исполняемые в среде PowerShell. Для повышения функциональности можно создавать собственные командлеты или устанавливать командлеты сторонних разработчиков. Кроме командлетов, PowerShell позволяет выполнять функции, внешние сценарии (хранятся в файлах с расширением ps1) и внешние исполняемые файлы.

В состав PowerShell включена довольно обширная справочная система. Для начала работы с ней можно выполнить команду Get-Help.

Для получения детальной справки по какому-либо командлету или разделу основных сведений, необходимо указать его название в качестве параметра команды.

Параметры
Строго говоря, следуя духу единообразного именования в PowerShell, все передаваемые командлету имена параметров должны следовать за символом «-». Однако для простоты написания названия некоторых параметров можно опускать. Например, для вызова справки по командлету Get-Content вместо полного указания

PowerShell:

Get-Help –name Get-Content

можно ввести команду

PowerShell:

Get-Help Get-Content

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

PowerShell:

Get-Help Get-Content –Detailed

Конвейер
В PowerShell реализован механизм передачи данных от одного процесса другому или вывод их в файл. Поскольку, как отмечалось выше, PowerShell оперирует не текстом, а объектами, при перенаправлении элементом обмена информации является объект, вместе со своей структурой. Такая возможность позволяет оперировать с объектами - отбирать их по заданному фильтру, сортировать, группировать их и т. д. Для организации такого конвейера (в документации на английском языке используется термин pipeline - трубопровод или канал) в тексте сценария используется знак вертикальной черты. При обнаружении такого знака интерпретатор передает объекты от одного командлета другому в качестве входных параметров.

В качестве примера конвейера и возможности получать доступ к свойствам передаваемых по нему объектов, приведем следующую ситуацию. Для проверки, не выполняются ли на компьютере некие подозрительные программы, мы хотим получить список всех запущенных процессов, получить пути и названия файлов, их запускающих, а также посмотреть дату создания таких файлов. В дополнение, отсортируем такой список по дате создания в убывающем порядке и отберем 10 наиболее "свежих" из них. Добавим к выводной информации также время последней модификации файла. Процессы с именами "System" и "Idle" из рассмотрения исключим, так как они не содержат пути к файлам.

Как говорится, хорошо сформулированный вопрос - уже половина решения. Взгляните:
Вводя код, вы всегда можете разбить строку, поставив в месте переноса знак «`» после пробела. Можно даже просто нажать клавишу Enter, не закончив строки. В этом случае PowerShell изменит приглашение на >>, давая пользователю понять, что интерпретатор считает код не завершенным и ожидает окончания его ввода.

Как и множество других скриптовых языков, PowerShell позволяет использовать переменные. Обозначением переменной служит знак "$". В случае передачи объекта по конвейеру, переменная $_ указывает на сам передаваемый объект.

Рассмотрим действия кода "по шагам". Сначала мы получаем список процессов с помощью командлета Get-Process. Эти данные передаются по конвейеру далее и фильтруются по условиям, заданным в where-Object (мы откидываем процессы с именами "System" и "Idle").

Следующий элемент конвейера - Get-Item возвращает атрибуты отобранных объектов. Осталось их отсортировать (время создания в убывающем порядке) и выбрать интересующие нас значения (имена папки и исполняемого файла, время создания и последней модификации файла). Последний параметр, -first 10 указывает, что выводиться будут лишь первые 10 элементов из списка объектов. Попробуем выполнить в среде Server 2008:


Увеличить изображение

Замечательно, то что надо. Однако при попытке выполнить тот же код в среде Windows XP или Server 2003 обнаружилось, что там это выглядит не столь гладко:


Увеличить изображение

При просмотре результатов выполнения

PowerShell:

Get-Process | Select Path

выяснилось, что пути двух процессов - winlogon и csrss - в Windows XP и Server 2003 PowerShell интерпретирует как \??\C:\WINDOWS\system32\. За разъяснением такого поведения я обратился к Василию Гусеву , специалисту по PowerShell. Он пояснил, что эти процессы не используют Win32API, и столь разная реакция на них в XP/Vista со стороны.NET, вероятно, вызвана различием платформ этих операционных систем.

Решив, что использовать механизмы обработки ошибок (в части обхода "непонятного" пути с подавлением вывода сообщения об ошибке) или исключения из списка процессов winlogon и csrss в данном случае не годится (возможно, они инфицированы, а дату их модификации в результатах мы уже не увидим), команды были изменены следующим образом:

PowerShell:

Get-Process | ForEach-Object { if ($_.Path -ne $NULL) { Get-Item ($_.Path -replace "\\\?\?\\", "") } } | Sort CreationTime -desc | Select FullName, Name, CreationTime, LastWriteTime -first 10

А читатель может получить некоторое представление об использовании в PowerShell условий и регулярных выражений.

Небольшие пояснения к коду.

  • На втором этапе конвейера применен командлет ForEach-Object, позволяющий выполнить заданную операцию для каждого объекта из набора, передаваемого на его вход.
  • Как указывалось выше, текущий объект, над которым выполняется операция, представлен переменной $_.
  • В качестве заданной операции здесь выступает условие вида if (условие ){исполняемый код, если условие истинно }.
  • Так же, как и в cmd.exe, для операторов сравнения используются не символы вида < или >, а аббревиатуры - в данном случае это "не равно"(not equal): -ne.
  • Итак, если путь процесса содержит какое-либо значение (в случае с "System" и "Idle" путь просто отсутствует), с помощью функции replace все символы "\??\" в пути будут удалены (пожалуй, более детально затрагивать вопрос регулярных выражений мы пока не будем),
  • а командлет Get-Item предоставит доступ к свойствам текущего процесса.
Ну а далее - все, как и в первом примере. Результат выполнения теперь одинаков:
Увеличить изображение

Получение сведений об объектах
Возможно, у читателя уже возник вопрос - а как, вообще говоря, можно узнать, какую информацию можно получить в результате выполнения той или иной команды? Какие действия можно произвести с полученными данными? Например, в вышеописанном случае, откуда можно было узнать, что мы сможем получить дату создания файла? Одним из простых способов анализа объекта, возвращаемого командой, является передача этого объекта на вход командлета Get-Member. Этот командлет выводит сведения о типе объекта и всех его элементов. Как правило, объекты имеют большое количество разнообразных свойств и результатом работы Get-Member может стать весьма объемный текст, который не очень удобно просматривать. В этом случае можно либо разделять информацию на части, либо ее отфильтровывать. Пример получения информации об объекте, возвращаемом командлетом Get-Process, просмотр которой можно осуществлять постранично:

PowerShell:

Get-Process | Get-Member | Out-Host -Paging

По заполнении страницы, пользователь может выбрать один из вариантов - вывести еще одну страницу, вывести еще одну строку или прекратить вывод данных.

Фильтрация данных выполняется при помощи параметра MemberType, определяющего, сведения какого рода должны быть выведены. Например, команда

PowerShell:

Get-Process | Get-Member -MemberType Properties

выведет лишь свойства объекта, а

PowerShell:

Get-Process | Get-Member -MemberType Methods

Лишь его методы. Еще один способ посмотреть свойства объекта - присвоить переменной объект, затем набрать в консоли имя переменной, поставить точку и нажать клавишу Tab. С каждым нажатием клавиши PowerShell будет перебирать и подставлять методы и свойства объекта. Перебор в обратную сторону возможен с помощью сочетания клавиш Shift+Tab.

Безопасность
Как уже отмечалось, использование сценариев VBScript/JScript представляет потенциальную опасность для системы - для их исполнения достаточно щелкнуть по значку мышью. Опасность еще более возрастает, если пользователь вошел под учетной записью, входящей в группу администраторов. В PowerShell скрипт с расширением ps1 невозможно запустить на исполнение с помощью мыши - в системе такой файл будет открыт не в командной оболочке, а в Блокноте. Для запуска сценария необходимо запустить саму оболочку PowerShell, ввести имя файла и нажать клавишу Enter.

В новой оболочке так же невозможна подмена команд. Суть этого приема, применяемого злоумышленниками, заключается в следующем. Обычно у пользователя, не имеющего прав администратора, есть некоторые папки с разрешениями на запись и выполнение файлов. Характерный пример - папка C:\Documents and Settings\имя_пользователя. Вредоносная программа создает в такой папке исполняемый файл с именем, совпадающим с именем команды оболочки или именем исполняемой системной программы. К примеру, я создал в "своей" папке документов ipconfig.vbs, выводящий простое сообщение. Теперь, если, запустив cmd.exe, и находясь в своей папке, я попытаюсь выполнить команду Windows ipconfig, то получу вот такой результат:


Увеличить изображение

Для полноты иллюстрации можно поместить в папку с документами и исполняемый файл, переименованный в нашем случае в ipconfig.exe. Тогда даже при вызове с указанием расширения будет запускаться файл из текущей папки, а не из \system32. С PowerShell такой фокус не пройдет - для вызова скрипта, путь к которому не совпадает с путями, заданными в системной переменной %Path, необходимо явно указать его расположение. Даже в том случае, когда скрипт расположен в папке, являющейся для оболочки текущей, необходимо указать путь в таком виде: .\имя_файла. Точка с обратным слешем указывают интерпретатору на текущую папку.

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

  • Restricted - настройка по умолчанию, запуск любых сценариев запрещен
  • AllSigned - разрешен запуск сценариев, имеющих цифровую подпись надежного издателя; сценарии, созданные пользователем, также должны быть заверены центром сертификации
  • RemoteSigned - разрешен запуск сценариев, если они не являются доверенными, но созданы локальным пользователем; сценарии, загруженные из Интернета, не имеющие подписи, не исполняются
  • Unrestricted - разрешен запуск любых сценариев
Текущий режим политики можно узнать, выполнив команду Get-ExecutionPolicy в оболочке. Для изменения режима выполните команду Set-ExecutionPolicy с необходимым названием политики в качестве параметра.
Также к инструментам, помогающим повысить безопасность при работе с PowerShell, я бы отнес параметры команд из разряда "а что будет, если...". Их два - whatif и confirm. Первый позволяет определить, какое действие и с каким объектом будет произведено, однако само действие реализовано не будет. Что-то вроде моделирования. Второй перед выполнением действия будет запрашивать подтверждения пользователя, и в случае утвердительного ответа - запускать необходимую команду фактически. То есть, такой вид подстраховки.

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

PowerShell:

Get-Process | Stop-Process

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

PowerShell:

Get-Process | Stop-Process -whatif

ничего страшного не произойдет - просто PowerShell покажет, что бы он сделал, если бы команда выполнялась без ключа -whatif:


Увеличить изображение

Псевдонимы
Оболочка имеет встроенный механизм псевдонимов команд. С одной стороны, псевдонимы используются для упрощения ввода команд. Как правило, в этом случае в качестве псевдонима используется сокращенное наименование командлета (например, gc для Get-Content или fl для Format-List). С другой стороны, этот механизм обеспечивает совместимость интерфейсов различных командных интерпретаторов. К примеру, имея опыт работы с cmd.exe, вы привыкли выводить содержимое папки с помощью команды dir. Выполнение этой команды в PowerShell приведет к тому же результату, хотя на самом деле оболочка вместо псевдонима dir будет выполнять командлет Get-ChildItem. Список всех доступных псевдонимов можно получить с помощью команды Get-Alias. Пользователь может создавать собственные псевдонимы, используя команду Set-Alias.

Диски PowerShell
Так же, как Windows оперирует с данными, используя файловую систему, оболочка PowerShell работает с хранилищами данных, представленных в виде дисков. Физические диски системы являются не единственным встроенным в оболочку видом хранилищ, с которыми обеспечивается взаимодействие. Пользователь может работать с реестром, встроенными переменными и переменными среды, хранилищами сертификатов точно так же, как и с обычными дисками, папками и файлами. Реализация такого взаимодействия и обеспечение абстракций, позволяющих пользователю применять одинаковые команды и методы к различным хранилищам данных, выполняется провайдерами - программами.NET.

Список провайдеров, доступных в данный момент оболочке, можно получить командой Get-PSProvider. Изначально в PowerShell присутствуют следующие "диски" - псевдонимы (Alias), переменные среды (Env), физические диски системы (C, D, и т. д.), функции, системный реестр, внутренние переменные (Variable) и хранилище сертификатов.

Вот пример чтения содержимого ветки реестра HKLM\Software\Microsoft


Увеличить изображение

Как видно, использованы те же команды, что для получения сведений о файловой системе. Но структура получаемых данных, естественно, различна. Кроме названия и свойств для каждого элемента выводится номер подраздела (SKC) и номер записи (VC). С помощью PowerShell пользователь может просматривать сведения о реестре, добавлять, удалять и модифицировать ключи. Позволю привести себе что-то вроде шпаргалки по работе с элементами реестра:


Увеличить изображение

И код для примера выполнения различных манипуляций с ключами реестра и их параметрами:

PowerShell:

# Создаем новый подраздел с именем valks в ветке HKEY_CURRENT_USER\Software New-Item -path HKCU:\Software\valks # Добавляем в созданный раздел новый строковый параметр с именем Param1 и значением StringValue New-ItemProperty -path HKCU:\Software\valks -name Param1 -propertyType String -value StringValue # Создадим подраздел SubFolder New-Item -path HKCU:\Software\valks\SubFolder # Добавляем еще один параметр - Param2 типа DWord и значением 12 New-ItemProperty -path HKCU:\Software\valks -name Param2 -propertyType DWord -value 12 # Получаем список всех параметров Get-ItemProperty HKCU:\Software\valks # Получаем значение параметра Param2 Get-ItemProperty HKCU:\Software\valks | Format-list Param2 # Или можем считать раздел в переменную $key $key = Get-ItemProperty HKCU:\Software\valks # И вывести значение нужного параметра Write-Host "Значение параметра Param2: " $key.Param2 # Изменим значение параметра Param2 на 193 Set-ItemProperty HKCU:\Software\valks -name Param2 -value 193 # Изменим название параметра Param1 на Параметр1 Rename-ItemProperty -path HKCU:\Software\valks -name Param1 -newname Параметр1 # Удаляем Параметр1 Remove-ItemProperty HKCU:\Software\valks -name Параметр1 # Удаляем весь подраздел valks Remove-Item HKCU:\Software\valks

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

PowerShell:

Function GetAutoexec ($hives) { # Если функции не передается входной массив ключей реестра, # используем этот: $hives = "HKCU:\Software\Microsoft\Windows\CurrentVersion\Run", ` "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run", ` "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\Explorer\Run" # Выодим заголовок и переносим строку Write-Host "Список автозагрузки`n" # Начинаем перебирать элементы массива - ветви реестра Foreach ($hive in $hives){ # Выводим название ветви зеленым цветом Write-Host "Ветвь $hive" -ForegroundColor Green # Проверяем, существует ли ветвь в реестре if (Test-Path $hive){ # Получаем очередной ключ реестра $param = Get-Item $hive # для каждого ключа... foreach ($p in $param){ # ...получаем список его параметров foreach ($key in $p.getvalueNames()){ # выводим название параметра и его значение "Загрузка $key из " + $p.GetValue($key) } } } # переносим строку Write-Host "`n" } } # осуществляем вызов самой функции GetAutoexec

Пользователь может создавать собственные диски, используя существующие провайдеры. Вот пример создания диска PowerShell с именем Win, содержимое которого будет являться корневой папкой C:\Windows:

PowerShell:

New-PSDrive -Name Win –PSProvider FileSystem -Root "C:\Windows"

После создания диска PowerShell к нему можно обращаться точно так же, как к обычному диску системы.


Увеличить изображение

Однако необходимо знать, что по завершении сеанса работы с PowerShell он будет автоматически удален. Так же, как и псевдонимы, функции и переменные, созданные пользователем в течение сеанса. Для того, чтобы сохранить перечисленные изменения, необходимо создать профиль PowerShell.

Профили PowerShell
Профиль - это файл с расширением ps1. Фактически, это тот же скрипт, выполняемый оболочкой при ее запуске. Профили в оболочке не создаются автоматически - они должны быть созданы пользователем самостоятельно. Созданные профили будут загружаться при каждом запуске PowerShell, если политикой выполнения разрешено загружать конфигурационные файлы. Возможна обработка до четырех различных профилей. Расположение файлов в порядке последовательности их загрузки:

  • %windir%\system32\WindowsPowerShell\v1.0\profile.ps1 - профиль, применяемый ко всем пользователям и оболочкам
  • %windir%\system32\WindowsPowerShell\v1.0\ Microsoft.PowerShell_profile.ps1 - профиль, применяемый ко всем пользователям только оболочки PowerShell
  • %UserProfile%\My Documents\WindowsPowerShell\profile.ps1 - применяется для текущего пользователя во всех оболочках
  • %UserProfile%\My Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1 - применяется для текущего пользователя только в оболочке PowerShell
Под различными оболочками здесь нужно учитывать то обстоятельство, что PowerShell может оказаться не единственным приложением, использующим файлы профилей ps1. Некоторые интегрированные среды разработки (IDE) также могут использовать их. Один из характерных примеров - инструмент PowerGUI , разработанный Quest Software, предоставляющий средства графического интерфейса для работы с PowerShell.
Путь к профилю текущего пользователя только оболочки PowerShell хранится во встроенной переменной $profile. Для его создания выполните команду
Объекты WMI являются для PowerShell вполне "родными". Достаточно выполнить команду

А вот небольшой пример опроса всех компьютеров в локальной сети с адресом 192.168.1.0 и маской подсети 255.255.255.0:

PowerShell:

1..254| ForEach-Object -Process { Get-WmiObject -Class Win32_PingStatus -Filter ("Address="192.168.1." + $_ + """) -ComputerName . } | Select-Object -Property Address,ResponseTime,StatusCode

В первом элементе конвейера генерируется массив чисел от 1 до 254. На втором этапе каждое число из массива подставляется в IP-адрес, который будет пинговаться при помощи средств WMI. Результаты будут выводиться в таблицу с тремя столбцами - адрес хоста, время отклика и статус ответа. В случае ответа хоста возвращается статус с кодом "0".

Работа с COM-объектами
Платформа.NET имеет встроенные средства, позволяющие ей работать с COM-компонентами. Эта возможность позволяет управлять работой различных приложений, поддерживающих COM. В качестве примера покажем функцию для автоматизации работы с Internet Explorer. Мы откроем IE и перейдем по адресу WindowsFAQ.ru . Если в качестве параметра функции будет передана строка, будем искать ее с помощью поискового механизма самого сайта, если параметр будет отсутствовать - будем искать слово windows. Вот код с комментариями:

PowerShell:

# Объявляем функцию, устанавливаем параметр по умолчанию - windows function WinfaqSearch ($str = "windows") { # Создаем COM-объект - Internet Explorer $ie = New-Object -Comobject InternetExplorer.application # Указываем браузеру адрес перехода $ie.Navigate("http://windowsfaq.ru") # Делаем запущенный экземпляр IE видимым $ie.Visible = $True # На всякий случай, ждем загрузки страницы 5 секунд Start-Sleep 5 # Получаем текст веб-страницы $doc=$ie.document # Ищем поле ввода формы поиска на странице $text = $doc.getElementById("mod_search_searchword") # Вводим в него нужное значение $text.value = $str # Получаем саму форму, отвечающую за поиск $forms = @($ie.Document.forms | where {$_.action -match "index.php\?option=com_search&Itemid=5"}) # Отправляем в нее запрос $forms.Submit() # Спрашиваем, надо ли закрыть экземпляр IE if (($resp = Read-Host "Закрыть Internet Explorer ? [Y]Да/[N]Нет") -eq "y"){ if ($ie.Visible -eq $true){ $ie.Quit() } Remove-Variable ie } }

Заключение
Конечно, в одной статье невозможно описать все возможности PowerShell. К тому же Microsoft продолжает работу над его улучшением - вторая версия должна поддерживать управление удаленными компьютерами непосредственно самой оболочкой. Ожидаются и другие нововведения. Учитывая, что PowerShell будет являться компонентом новых ОС, не приходится сомневаться в том, что сфера его применения в продуктах Microsoft будет только расширяться.

Автор выражает признательность Василию Гусеву за помощь, оказанную при подготовке статьи.

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

Если на вашем компьютере установлена Windows 10, то, пожалуй, ещё более быстрый способ открыть PowerShell - нажать правой кнопкой мыши по кнопке «Пуск» и выбрать нужный пункт меню (там присутствует сразу два пункта - для простого запуска и от имени администратора). Это же меню можно вызвать, нажав клавиши Win+X на клавиатуре.

Примечание: если в этом меню вместо Windows PowerShell у вас отображается командная строка, то заменить её на PowerShell вы, при желании, можете в Параметры - Персонализация - Панель задач, включив пункт «Заменить командную строку оболочкой Windows Powershell» (в последних версиях Windows 10 параметр включен по умолчанию).

Запуск PowerShell с помощью диалогового окна «Выполнить»

Еще один простой способ запуска PowerShell - использовать окно «Выполнить»:

  1. Нажмите клавиши Win+R на клавиатуре.
  2. Введите powershell и нажмите Enter или Ок.

При этом в Windows 7 можно установить отметку запуска от имени администратора, а в последней версии Windows 10, если при нажатии Enter или Ok удерживать клавиши Ctrl + Shift, то утилита также запуститься от имени администратора.

Видео инструкция

Другие способы открыть PowerShell

Выше перечислены далеко не все способы открытия Windows PowerShell, но, уверен, что их будет вполне достаточно. Если же нет, то:

Также, бывает, спрашивают, а что такое PowerShell ISE и PowerShell x86, которые находятся, например, при использовании первого способа. Отвечаю: PowerShell ISE - «Интегрированная среда сценариев PowerShell». По сути, с её помощью можно выполнять все те же команды, но, помимо этого, в ней присутствуют дополнительные возможности, облегчающие работу со скриптами PowerShell (справка, инструменты отладки, цветовая разметка, дополнительные горячие клавиши и т.п.). В свою очередь версии x86 нужны в случае, если вы работаете с 32-битными объектами или с удаленной системой x86.

© 2024 lidvalbecker.ru - Мой компьютер - Lidvalbecker