Как открыть PowerShell, все методы. Что такое Windows PowerShell и для чего он нужен Powershell windows 10 нужен ли

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

Поясним это на примере. Любую отдельную команду к ОС можно обернуть интерфейсом из окошек и элементов управления, наподобие флажков, списков выбора и кнопок. Но что делать, если команд таких несколько? То есть тогда, когда нужно последовательно выполнять команду за командой. Очевидно, графический интерфейс для такой задачи окажется сильно перегруженным. И тем более сложным, чем больше команд потребуется выполнить.

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

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

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

PowerShell на смену «батникам»

Со временем командные оболочки сильно эволюционировали. Процессору «батников» (.bat-файлов) DOS пришел на смену командный процессор 4DOS, в Windows происходили аналогичные изменения – перечень исполнимых инструкций значительно расширился, приобретая сходство с современными скриптовыми языками программирования.

Однако ориентация таких систем не изменилась – все они как были, так и оставались инструментами системного администратора или (в редких случаях) продвинутого пользователя.

Также у них появились конкуренты, наподобие скриптов JScript и VBScript, функционирующих на базе языковой машины WHS(Windows Script Host). Казалось бы, эволюция «батников» зашла в тупик, и они должны были вымереть, как динозавры. Но не тут то было.

Осенью 2003-го года разработчиками Microsoft был анонсирован новый командный процессор под именем Windows PowerShell с радикально переработанной концепцией и синтаксисом. Причем движком для него выступала платформа.Net Framework, а это означало, ни много ни мало, доступ из скрипта к огромной копилке возможностей этого фреймворка. В PowerShell команды перестали быть простыми текстовыми инструкциями, а превратились в классы.

Net со всеми вытекающими из этого последствиями (что такое классы в современном программировании, думается, объяснять не нужно) и получили новое имя – «командлеты». Можно еще много рассуждать на тему отличий оболочки PowerShell от прочих скриптовых оболочек, но лучше предложить краткий перечень ее функций, чтобы вы поняли, что такое PS.

Функциональность PowerShell

Функциональность оболочки такова:

  • Командлеты предоставляют интерфейс для работы с сущностями из следующего списка: реестром, процессами, журналом, службами, WMI. То есть идеально подходят для нужд системного администратора.
  • PowerShell – это развитый скриптовый язык программирования на основе объектной парадигмы.
  • Унифицированный дизайн языка PowerShell на концепции хранилищ системных данных с единообразной структурой. Для программиста это означает возможность использовать одни и те же командлеты при работе с различными хранилищами.
  • В язык включена мощная система навигации по файловой системе и системным хранилищам. Причем навигация по тем и другим осуществляется одинаково.
  • Ориентация на объекты означает не только инкапсуляцию различных методов в одном объекте, но и возможность сохранять экземпляры объектов на диске или в СУБД.
  • Интерфейс PowerShell может быть легко расширен разработчиком, что означает возможность создавать целые программные пакеты PoweShell для решения специальных прикладных задач системного программирования.

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

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

Попытки улучшить состояние дел в области управления и администрирования 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 будет только расширяться.

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

Введение в интегрированную среду сценариев 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 PowerShell. В некотором смысле PowerShell является инструментом, который призван заменить командную строку и обеспечить более мощные возможности для управления операционной системой Windows. В этой статье мы попытаемся объяснить доступно, что представляет собой этот инструмент, почему он настолько мощный и кто, как правило, использует его чаще всего.

Что такое PowerShell?

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

Windows PowerShell является оболочкой, разработанной Microsoft для целей автоматизации задач и управления конфигурацией. Эта мощная оболочка основана на фреймворке.NET и включает в себя оболочку командной строки и язык сценариев.

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

Первая версия PowerShell была выпущена в ноябре 2006 года для Windows XP, Windows Server 2003 и Windows Vista. Последней является версия 4.0, которая была выпущена в октябре 2013 г. Она идет по умолчанию с Windows 8.1 и Windows Server 2012 R2.

Что можно сделать с помощью PowerShell?

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

Возможности PowerShell позволяют упростить и автоматизировать трудоемкие и повторяющиеся задачи путем создания сценариев и объединения нескольких команд вместе.

Если вы являетесь администратором сети, вы обнаружите, что PowerShell очень полезен при работе с Active Directory. Учитывая, что инструмент содержит сотни настраиваемых команд, которые называются командлеты, вероятность того, что PowerShell может помочь вам стать более продуктивным, очень высока.

Как запустить PowerShell в Windows 8.1?

Если у вас нет плитки PowerShell на начальном экране или ярлыка на рабочем столе, тогда вы можете открыть его с помощью поиска – это один из самых простых способов. Нажмите + Q, введите «powershell», а затем нажмите Enter.

Также вы можете открыть PowerShell в разделе «Приложения» на начальном экране: перейдите на начальный экран и переместите курсор в левый нижний угол, чуть ниже последней плитки в первой колонке. Нажмите на значок со стрелкой, указывающей вниз. Затем нажмите на иконку PowerShell в разделе «Служебные».

Чтобы открыть PowerShell с помощью диалога «Выполнить», нажмите клавиши + R, введите «powershell» и нажмите Enter.

Как запустить PowerShell в Windows 7?

В Windows 7 вы можете найти инструмент по ключевому слову «powershell» в меню «Пуск».

Кроме того, открыть PowerShell через меню «Пуск» можно в разделе «Стандартные».

Очевидно, что упомянутая выше команда в окне «Выполнить» работает и в Windows 7.

Кто обычно использует PowerShell?

Без всякого сомнения, PowerShell является выбором многих ИТ-администраторов. И не зря, ведь инструмент колоссально упрощает операции управления и снижает объем работы в крупных корпоративных сетях.

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

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

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

Отличного Вам дня!




Top