Как открыть PowerShell в Windows 10?
Вызвать на своем компьютере ПоверШелл удастся несколькими способами. Эта встроенная в ОС утилита может быть закреплена в Пуске, то есть в списке установленных на компьютере программ. Найти аналог командной консоли можно через Проводник, Диспетчер задач, поисковую строку и даже через службу Выполнить. В процессе поиска пользователю нужно лишь написать название утилиты на английском языке.
Из меню «Win + X»
Как самостоятельно открыть ПоверШелл, вызвав контекстное меню:
- перейти на рабочий стол;
- одновременно нажать на кнопки «Win» и «X»;
- откроется меню «Приложения и возможности»;
- отыскать в списке название утилиты на английском;
- из меню попасть в консоль ПоверШелл можно на пользовательских или администраторских правах;
выбрать нужный вариант и кликнуть по нему один раз.
Как попасть в ПоверШелл, если при нажатии на «Win» и «X» открывается командная строка:
- активировать «Параметры»;
- отыскать «Персонализация»;
- перейти в «Панель задач»;
- отыскать фразу «Заменить командную строку оболочкой WinPowerShell…»;
- переместить переключатель в позицию «Вкл.»;
- вернуться на рабочий стол;
- еще раз нажать на «Win» и «X».
С помощью поиска
Как самостоятельно запустить ПоверШелл (через «Поиск»):
- в поисковой строке Виндовс написать: PowerShell;
- выполнить ввод;
- на дисплее отобразится результат поиска, то есть искомое приложение;
- если кликнуть по названию левой кнопкой мыши, то утилита запустится на правах пользователя;
- если кликнуть по названию правой кнопкой мыши, то всплывет окошко со списком действий;
- можно запустить утилиту на администраторских правах или открыть папку;
- при желании значок этого приложения разрешается закрепить на виндовской панели задач.
Из Проводника
Как самостоятельно вызвать утилиту (используя Проводник Виндовс 10):
- выполнить активацию Проводника;
- в поисковую строчку ввести название (на английском);
- на дисплее появится искомое приложение.
Еще один способ вызова ПоверШелл (используя Проводник):
- активировать виндовский Проводник;
- отыскать папку с названием утилиты (на английском);
- обычно ПоверШелл находится: C:\Windows\System32\WindowsPowerShell\v1.0 или C:\Windows\syswow64\Windowspowershell\v1.0;
через «Файл», или используя правую клавишу мыши, открыть найденное приложение в нужном режиме (на пользовательских или администраторских правах).
Дополнительные и универсальные методы запуска оболочки
Как самостоятельно активировать утилиту через Пуск:
- перейти в Пуск;
- откроется список всех установленных на ПК программ;
- отыскать название утилиты (на английском);
- запустить в нужном режиме (на пользовательских или администраторских правах).
Как вызвать ПоверШелл из консоли Выполнить:
- активировать Выполнить;
- в строчке «Открыть» написать символы: «powershell»;
нажать на «ОК».
Как самостоятельно открыть утилиту из командной строки:
- вызвать консоль (на администраторских правах);
- в окошке написать символы: «powershell»;
- кликнуть на «Enter»;
- оболочка утилиты запустится в интерфейсе вызванной командной консоли.
Как вызвать приложение (через Диспетчер задач):
активировать на своем ПК «Диспетчер…»;
- отыскать вверху подраздел «Файл»;
- в меню «Файл» активировать «Запустить новую задачу»;
- появится всплывающее окошко «Создание задачи»;
- в строчке «Открыть» написать символы: «powershell»;
- если нужно, поставить галочку возле опции «Создать задачу с администраторскими правами»;
- кликнуть на «ОК».
Notes
-
When using the Wait parameter, waits for the process tree (the process and all
its descendants) to exit before returning control. This is different than the behavior of the
cmdlet, which only waits for the specified processes to exit. -
This cmdlet is implemented by using the Start method of the System.Diagnostics.Process
class. For more information about this method, see
. -
On Windows, when you use UseNewEnvironment, the new process starts only containing the default
environment variables defined for the Machine scope. This has the side affect that the
is set to SYSTEM. None of the variables from the User scope are included. -
On Windows, the most common use case for is to use the Wait parameter to block
progress until the new process exits. On non-Windows system, this is rarely needed since the
default behavior for command-line applications is equivalent to . -
When using on non-Windows systems, you never get a new terminal window.
Ограничения и проблемы
Скрипт службы должен запускаться в оболочке, выполняемой с правами администратора, а иначе вы будете получать разнообразные ошибки из-за отказа в доступе.
Пример скрипта работает в Windows версий от XP до 10 и в соответствующих серверных версиях. В Windows XP вы должны установить Windows PowerShell v2, который по умолчанию отсутствует. Скачайте и установите Windows Management Framework v2 for XP (bit.ly/1MpOdpV), включающую Windows PowerShell v2. Заметьте, что я очень мало тестировал в этой ОС, поскольку она больше не поддерживается.
Во многих системах выполнение скриптов Windows PowerShell запрещено по умолчанию. Если вы получаете ошибку наподобие «выполнение скриптов отключено в этой системе» при попытке запустить PSService.ps1, то используйте:
Более подробные сведения см. во врезке «Ссылки».
Очевидно, такой скрипт службы, как этот, не может сравниться по производительности с компилированной программой. Скрипт службы, написанный в Windows PowerShell, очень удобен для проверки концепции и для задач с низкими издержками в отношении производительности вроде мониторинга системы, кластеризации служб и т. д. Но для любой высокопроизводительной задачи рекомендуется переписать службу на C++ или C#.
Кроме того, объем занимаемой памяти превышает таковой у скомпилированной программы, так как требует загрузки полнофункционального интерпретатора Windows PowerShell в сеансе System. Но в современных компьютерах со многими гигабайтами памяти это не имеет особого значения.
Этот скрипт не имеет абсолютно никакого отношения к PsService.exe от Марка Руссиновича (Mark Russinovich). Я выбрал имя PSService.ps1 до того, как узнал о совпадении имен. В конечном счете я сохранил имя скрипта-примера таким, поскольку оно делает понятным предназначение скрипта. Конечно, если вы планируете поэкспериментировать со своей службой на основе Windows PowerShell, то должны переименовать его, чтобы получить уникальное имя службы из уникального базового имени скрипта!
Ссылки
- Введение в Windows-службы (bit.ly/1UOBJJY);
- Как создавать Windows-службы (bit.ly/1VJCnJo);
- Класс ServiceBase (bit.ly/1UOC13y);
- Управление службами (bit.ly/1VJCZyG);
- Как отлаживать Windows-службы (bit.ly/1RjEhPg).
Жан-Франсуа Лавуа (Jean-François Larvoire) работает на Hewlett-Packard Enterprise в Гренобле (Франция). В течение более 30 лет занимается разработкой программного обеспечения для BIOS персональных компьютеров, драйверов для Windows и для системного управления Windows и Linux. С ним можно связаться по адресу [email protected].
Выражаю благодарность за рецензирование статьи эксперту JDH IT Solutions Джеффри Хиксу (Jeffery Hicks).
Что такое Windows PowerShell
Windows PowerShell – это скриптовый язык и программа с интерфейсом командной строки для выполнения этих скриптов. Данный язык был выпущен в 2006 году в составе второго сервис-пака для Windows XP и с тех пор PowerShell является частью всех операционных систем от Microsoft. В 2008 году появилась вторая версия данного языка, и начиная с Windows 7 используется именно она. Файлы со скриптами Windows PowerShell имеют расширение PS1 и могут запускаться как привычные всем BAT и CMD файлы.
Windows PowerShell – это скриптовый язык, который разрабатывался в первую очередь для бизнес-клиентов Microsoft, которым нужно мощные инструменты для автоматизации задач по управлению серверами и компьютерами на базе Windows. В качестве основы для данного языка была использована платформа .NET, разрабатываемая компанией Microsoft с 2002 года.
Windows PowerShell позволяет автоматизировать массу разнообразных задач. С его помощью можно управлять файлами, службами, процессами, аккаунтами и настройками. Язык PowerShell понимает многие команды из обычной Командной строки Windows (CMD), но он имеет и свой собственный язык, состоящий из собственных команд, которые здесь называются командлетами.
Командлеты (на английском cmdlets) формируются по правилу Глагол-Существительное, например, Get-Help. Ознакомиться с основами Windows PowerShell можно с помощью справки (командлет «Get-Help»). Для получения общей информации просто введите команду «Get-Help», для получения справки о конкретном командлете введите «Get-Help Имя-командлета». Например, если ввести команду «Get-Help Get-Process», то мы получим справку о командлете Get-Process.
Как запустить PowerShell?
В производственной среде предприятия, которую я поддерживаю, я работаю с тремя разными учетными записями пользователей Active Directory. В лабораторной среде в этой книге используются зеркальные экземпляры этих учетных записей. Я вошел на компьютер с Windows 10 в качестве пользователя домена, который не является администратором домена или локальным администратором.
Я запустил консоль PowerShell, щелкнув ярлык Windows PowerShell, как показано на рис. 1-1.
Обратите внимание, что в строке заголовка консоли PowerShell указано «Windows PowerShell», как показано на рис. 1-4
Некоторые команды выполняются нормально, но PowerShell не поддерживает управление доступом пользователей (UAC). Это означает, что оболочка не может запрашивать повышение прав для задач, требующих утверждения администратором.
Выдается следующее сообщение об ошибке.
Решение этой проблемы заключается в запуске PowerShell от имени пользователя домена, который является локальным администратором.
Именно так настроена моя вторая учетная запись пользователя домена. При использовании принципа наименьших привилегий эта учетная запись не должна быть администратором домена или иметь любые повышенные привилегии в домене.
Закройте PowerShell. Перезапустите консоль PowerShell, только на этот раз щелкните правой кнопкой мыши ярлык Windows PowerShell и выберите пункт Запуск от имени администратора, как показано на рис. 1-5.
Если вы выполнили вход в Windows в качестве обычного пользователя, вам будет предложено ввести учетные данные. Я буду вводить учетные данные учетной записи пользователя, которая является пользователем домена и локальным администратором, как показано на рис. 1-6.
После повторного запуска PowerShell с правами администратора в строке заголовка должно быть указано «Администратор: Windows PowerShell», как показано на рис. 1-7.
Теперь, когда PowerShell работает с повышенными привилегиями локального администратора, управление доступом пользователей больше не будет проблемой в случае запуска на локальном компьютере команды, для выполнения которой обычно требуется запрос на повышение прав. Следует иметь в виду, что любая команда, выполняемая из этого экземпляра консоли PowerShell с повышенными привилегиями, также запускается с повышенными привилегиями.
Чтобы упростить поиск PowerShell и запускать оболочку от имени администратора, рекомендуется закрепить ее на панели задач и настроить автоматический запуск от имени администратора при каждом запуске.
Еще раз выполните поиск PowerShell, только на этот раз щелкните ее правой кнопкой мыши и выберите пункт «Закрепить на панели задач», как показано на рис. 1-8.
Щелкните правой кнопкой мыши ярлык PowerShell, который теперь закреплен на панели задач, и выберите пункт «Свойства», как показано на рис. 1-9.
Щелкните «Дополнительно», как показано в первой части рис. 1-10, установите флажок «Запуск от имени администратора», как показано во второй части рис. 1-10, а затем дважды нажмите кнопку OK, чтобы принять изменения и выйти из обоих диалоговых окон.
Вам больше никогда не придется беспокоиться о поиске PowerShell или о том, запущена ли оболочка от имени администратора или нет.
Запуск PowerShell с повышенными привилегиями для предотвращения проблем, связанных с управлением доступом пользователей, влияет только на команды, выполняемые на локальном компьютере. Он не влияет на команды, предназначенные для запуска на удаленных компьютерах.
Установка пакета MSI
MSI-файл выглядит примерно так: . Пример:
После скачивания дважды щелкните установщик и следуйте инструкциям на экране.
Программа установки создает ярлык в меню Windows «Пуск».
- По умолчанию пакет устанавливается в каталог .
- Вы можете запустить PowerShell с помощью меню «Пуск» или файла .
Примечание
PowerShell 7.1 устанавливается в новом каталоге и работает параллельно с Windows PowerShell 5.1.
PowerShell 7.1 устанавливается как обновление на месте взамен PowerShell 6.x или PowerShell 7.0.
- PowerShell 7.1 устанавливается в папке .
- Папка добавляется в переменную .
- Папка удалена.
Если вам нужно запустить PowerShell 7.1 параллельно с другими версиями, используйте метод , чтобы установить новую версию в другую папку.
Установка администратором из командной строки
MSI-пакеты можно устанавливать из командной строки, что позволяет администраторам развертывать их без взаимодействия с пользователем. MSI-пакет включает в себя следующие свойства для управления параметрами установки:
- ADD_EXPLORER_CONTEXT_MENU_OPENPOWERSHELL. Это свойство позволяет добавлять пункт Открыть PowerShell в контекстное меню проводника.
- ADD_FILE_CONTEXT_MENU_RUNPOWERSHELL. Это свойство позволяет добавлять пункт Выполнить с помощью PowerShell в контекстное меню проводника Windows.
- ENABLE_PSREMOTING. Это свойство позволяет включать удаленное взаимодействие PowerShell во время установки.
- REGISTER_MANIFEST. Это свойство позволяет регистрировать манифест ведения журнала событий Windows.
В следующих примерах показано, как выполнить автоматическую установку PowerShell со всеми включенными параметрами.
Полный список параметров командной строки для см. здесь.
Разделы реестра, созданные во время установки
Начиная с версии PowerShell 7.1, пакет MSI создает разделы реестра, которые хранят данные о расположении установки и версии PowerShell. Эти значения можно найти в разделе . Значение уникально для каждого типа сборки (выпуск или предварительная версия), основного номера версии и архитектуры.
Release | Architecture | Ключ реестра |
---|---|---|
Выпуск версии 7.1.x | x86 | |
Выпуск версии 7.1.x | X64 | |
Предварительная версия 7.1.x | x86 | |
Предварительная версия 7.1.x | X64 |
Может использоваться администраторами и разработчиками для поиска пути к PowerShell. Значения будут одинаковыми для всех выпусков предварительных и дополнительных версий. Значения отличаются для каждого выпуска основной версии.
Что такое Windows PowerShell?
PowerShell разработан на основе среды CRL и платформы .NET Framework и в отличие от командной строки, которая принимает и возвращает текст, Windows PowerShell работает с объектами. У каждого объекта в PowerShell есть свойства и методы, которые можно использовать для управления этими объектами.
В Windows PowerShell Microsoft разработала концепцию командлетов (cmdlets), которая представляет собой систему именования команд «Глагол-Существительное». Данная система позволяет системным администраторам быстрей освоить и упростить работу с PowerShell.
С помощью Windows PowerShell можно:
- Получать доступ к файловой системе;
- Управлять реестром;
- Управлять службами;
- Управлять процессами;
- Настраивать операционную систему;
- Устанавливать программное обеспечение;
- Устанавливать роли и компоненты сервера;
- Осуществлять администрирование и конфигурирование ролей и компонентов сервера;
- Писать и использовать сценарии для автоматизации управления и администрирования;
- Выполнять другие задачи системных администраторов.
Windows PowerShell содержит многие часто используемые утилиты и команды, запускаемые из командной строки, например ipconfig, ping и другие. Сделано это для того, чтобы облегчить переход системных администраторов с командной строки на PowerShell.
Также для удобства многие часто используемые команды и утилиты в PowerShell имеют синонимы (Alias), например cls — это синоним командлета Clear-Host, dir синоним Get-ChildItem (полный список синонимов можно посмотреть путем запуска командлета Get-Alias).
Для упрощения поиска нужной команды в PowerShell есть специальный командлет Get-Command, с помощью которого можно осуществлять поиск, как по глаголу, так и по существительному. Все команды в Windows PowerShell сгруппированы в модули (например, Hyper-V, NetTCPIP), что также упрощает поиск нужной команды.
После того как нужная команда найдена, можно посмотреть инструкцию по работе с этой командой, т.е. справку, для этих целей есть специальный командлет Get-Help, например следующая команда покажет справку по командлету Get-Command:
Get-Help Get-Command
Справка в Windows PowerShell может быть краткой, детальной (параметр -Detailed), полной (параметр -Full), а также можно выводить только примеры (параметр — Examples). Следующая команда покажет только примеры использования командлета Get-Command:
Get-Help Get-Command -Examples
Справка PowerShell обновляемая, т.е. ее можно обновить командой Update-Help.
Командлеты в PowerShell
Данные команды являются частью языка PowerShell. Командлеты построены по принципу «Глагол-Существительное», разделенные дефисом (-); другими словами, мы сначала указываем, что делать, а через дефис — над чем. Например, командлет Get-Help, где Get — это глагол, означающий «Получить», а Help — существительное «Помощь» в контексте PowerShell «Показать – Справку». Командлеты PowerShell возвращают результаты в виде объектов, что является одним из главных отличий от командной строки Windows, в которой команды возвращают только текст на экран.
Кроме командлетов на получение данных (Get), существуют и такие типы командлетов как:
- Add – добавление данных;
- Clear – очистить;
- Enable – включить;
- Disable – выключить;
- New – создать;
- Remove – удалить;
- Set – задать;
- Start — запустить;
- Stop – остановить;
- Export – экспортировать;
- Import – импортировать;
- И еще много других.
Полный список командлетов в Windows PowerShell можно посмотреть с помощью специального командлета Get-Command. Например, запустите его с параметром -CommandType cmdlet, в итоге на экране у Вас отобразится список командлетов.
Get-Command -CommandType cmdlet
Как Вы уже поняли, у командлетов есть параметры, с помощью которых мы можем конкретизировать действия командлета. Параметры бывают обязательные и необязательные, например, у командлета Get-Command обязательных параметров нет.
Ниже на картинке представлен способ поиска командлета по глаголу (параметр Verb). В данном случае у нас отобразился список командлетов, которые умеют что-то перезапускать.
Команда
Get-Command -Verb Restart
Для поиска командлета по существительному необходимо использовать параметр Noun. Например, ниже мы получили список командлетов, которые работают со службами.
Команда
Get-Command -Noun Service
Если Вы не нашли нужный командлет по полному названию можете использовать маску в формате *Текст*.
Поиск команд с помощью командлета Get-Command
Командлет возвращает список всех доступных команд, установленных в системе.
Этот список довольно большой. Чтобы упростить поиск команд, рекомендуется ограничить объем возвращаемой информации. Можно отфильтровать ответ с помощью параметров или вспомогательных командлетов.
Фильтрация по имени
Выходные данные можно отфильтровать с помощью различных параметров. В этом случае фильтрация работает как запрос определенного свойства в команде. Суть в том, что необходимо указать свойство, которое будет условием фильтрации, после чего следует задать строку, с которой нужно выполнить сопоставление. В итоге вы получите сравнение, которое выглядит следующим образом:
На этом этапе фильтрация пытается выполнить точное сопоставление с указанным строковым аргументом.
Если при сравнении требуется больший уровень гибкости, можно использовать подстановочный знак , который выполняет сопоставление шаблону. Следующий код будет искать все команды, имена которых заканчиваются «process»:
Здесь для фильтрации используется параметр . Кроме , можно фильтровать, к примеру, по и .
Фильтрация по существительным и глаголам
Вы узнали, как можно выполнять фильтрацию по . Но есть и другие параметры для фильтрации. Глагол и существительное также могут быть условиями фильтра. Такая фильтрация используется для части имени команды.
-
Фильтрация по глаголу. Глагол в имени команды является ее левой частью. В команде частью глагола является . Чтобы выполнить фильтрацию по части глагола, укажите в качестве параметра, как показано ниже:
Приведенная выше команда выводит список всех команд, частью глагола в которых является .
-
Фильтрация по существительному. Правая часть команды — это часть существительного. Глагол должен входить в список глаголов, возвращаемых при вызове , а существительное может быть любым. В команде часть существительного представлена значением . Чтобы выполнить фильтрацию по существительному, укажите в качестве параметра и строкового аргумента, как показано ниже:
При фильтрации только по глаголу или только по существительному может быть выведен слишком большой результирующий набор. Чтобы сузить область поиска, рекомендуется объединить два параметра, как показано в примере ниже:
Результат выглядит следующим образом:
Таким образом, вы немного сократили объем выходных данных, так как знали глагол и то, что он вызывает.
Использование вспомогательных командлетов для фильтрации результатов
Выполнять фильтрацию можно не только с помощью параметров, но и с помощью команд. Ниже приведены некоторые команды, которые могут работать в качестве фильтров:
-
. Это очень универсальная команда для выбора конкретных свойств из одного объекта или нескольких. А с помощью ее параметров можно ограничить возвращаемый ответ. Ниже приведен пример использования для запроса ограниченного числа записей:
Результатом выполнения приведенной выше команды являются три первые верхние команды. Результат имеет следующий вид:
Стоит рассмотреть эту команду более подробно, так как с ее помощью можно выполнять гораздо больше задач (см. статью Select-Object).
-
. Помогает выбрать объекты из коллекции на основе значений свойств. Команда принимает выражение, в котором можно указать, какие столбцы должны соответствовать каким значениям. Чтобы найти все объекты process, где начинается с , можно использовать следующим образом:
В примере выше командлет создает коллекцию объектов process. Чтобы отфильтровать ответ, нужно передать команду через конвейер. Передача через конвейер означает, что две или более команды соединены с помощью символа вертикальной черты . Выходные данные одной команды служат входными данными для следующей команды. Чтение выполняется слева направо. использует для фильтрации выражение. Само выражение использует оператор и строковый аргумент, который является выражением с подстановочными знаками.
Обновление существующей версии Windows PowerShell
В пакет установки для PowerShell входит установщик WMF. Версия установщика WMF совпадает с версией PowerShell. Для Windows PowerShell нет отдельного установщика.
Если вам нужно обновить существующую версию PowerShell, в Windows используйте следующую таблицу, чтобы найти установщик для нужной версии PowerShell.
Windows | PS 3.0 | PS 4.0 | PS 5.0 | PS 5.1 |
---|---|---|---|---|
Windows 10 (см. примечание 1)Windows Server 2016 | — | — | — | установлено |
Windows 8.1Windows Server 2012 R2 | — | установлено | WMF 5.0 | WMF 5.1 |
Windows 8Windows Server 2012 | установлено | WMF 4.0 | WMF 5.0 | WMF 5.1 |
Windows 7 с пакетом обновления 1 (SP1)Windows Server 2008 R2 с пакетом обновления 1 (SP1) | WMF 3.0 | WMF 4.0 | WMF 5.0 | WMF 5.1 |
Примечание
Если в начальном выпуске Windows 10 включены автоматические обновления, PowerShell обновляется с версии 5.0 до 5.1. Если оригинальная версия Windows 10 не обновлена в Центре обновления Windows, версия PowerShell будет 5.0.
Как запустить Windows PowerShell
Здесь всё достаточно просто. Виндовс Пауэр Шелл — это обычный компонент операционной системы, который имеет свой исполняемый файл. Чтобы его открыть, можно воспользоваться следующим алгоритмом:
- Зайти в «Пуск». Значок располагается внизу экрана с левой стороны.
- Прописать в поисковой строке фразу «PowerShell», переключив клавиатуру на английскую раскладку.
- В результате поиска высветится значок приложения, по которому надо будет кликнуть ЛКМ один раз.
- При необходимости эту иконку можно перетащить на рабочий стол, чтобы каждый раз не выполнять перечисленные манипуляции, а сразу открывать утилиту двойным нажатием на её ярлык.
К сведению! Приведённым выше алгоритмом можно пользоваться всегда для открытия того или иного системного софта, предустановленного приложения.
Основные команды для PowerShell
В программе поддерживается огромное количество команд, применяемых к различным компонентам операционной системы Windows 10. Хорошо что есть возможность получить справку о любой команде непосредственно в окне программы Windows PowerShell. Это поможет разобраться с основными командами и принципами работы в новой среде.
- Get-Help — отображение справочных сведений о командлетах и основных понятиях. В справке описываются командлеты, функции, сценарии и модули, а также объясняются основные понятия, в том числе элементы языка Windows PowerShell.
- Update-Help — загрузка и установка файлов справки с общей папки или Интернета. После обновлений операционной системы может понадобиться обновление справки — обнаружение, скачивание и установка обновлений для модулей.
- Get-Command — вывод всех доступных функций и командлетов, с авто заполнением строки. Выбрав интересующую команду, выполните её с Get-Help для быстрого получения справки. Например, ознакомится с Get-Help Remove-AppxPackage.
Заключение
На самом деле Windows PowerShell — это очень полезная программа, которая не раз экономила нам время. Множество инструкций писались на примерах с её использованием. Но даже половина возможностей обновлённой оболочки не была задействована. О работе в ней можно написать значительно больше. Но благодаря основным командам можно ознакомиться со всеми возможностями программы.
Запуск
За управление службами отвечает SCM. Каждая операция запуска должна проходить через SCM, чтобы он мог отслеживать состояния служб. Поэтому, даже если пользователь хочет вручную инициировать запуск через скрипт службы, этот запуск должен быть выполнен как запрос к SCM. В этом случае последовательность операция перечислена ниже.
- Пользователь (администратор) запускает первый экземпляр: PSService.ps1 –Start.
- Этот первый экземпляр сообщает SCM запустить службу: Start-Service $serviceName.
- SCM выполняет PSService.exe. Ее процедура Main создает объект службы, а затем вызывает его метод Run.
- SCM вызывает метод OnStart объекта службы.
- C#-метод OnStart запускает второй экземпляр скрипта: PSService.ps1 –Start.
- Этот второй экземпляр, теперь выполняемый в фоне как системный пользователь, запускает третий экземпляр, который останется в памяти как настоящая служба: PSService.ps1 –Service. Этот экземпляр и работает как служба.
В итоге будут выполняться две задачи: PSService.exe и экземпляр PowerShell.exe, выполняющий PSService.ps1 –Service.
За управление службами отвечает SCM.
Все это реализуется тремя частями кода в скрипте.
Определение ключа –Start в блоке Param в начале скрипта:
В процедуре Main в конце скрипта блок if обрабатывает ключ –Start:
Фрагмент исходного кода на C#, процедура Main и обработчик для OnStart, который выполняет команду PSService.ps1 –Start, как показано на рис. 4.
Рис. 4. Обработчик стартового кода
Служба удаленного взаимодействия Windows PowerShell
Благодаря использованию протокола WS-Management служба удаленного взаимодействия Windows PowerShell позволяет запустить любую команду Windows PowerShell на одном или нескольких удаленных компьютерах. Вы можете устанавливать постоянные подключения, запускать интерактивные сеансы и выполнять скрипты на удаленных компьютерах.
Чтобы использовать службу удаленного взаимодействия Windows PowerShell, удаленный компьютер должен быть настроен для удаленного управления.
Дополнительные сведения, в том числе инструкции, см. в разделе about_Remote_Requirements.
После настройки службы удаленного взаимодействия Windows PowerShell вы получите доступ ко многим стратегиям удаленного взаимодействия.
В этой статье перечислены только некоторые из них. См. дополнительные сведения об удаленном взаимодействии.
Запуск интерактивного сеанса
Чтобы запустить интерактивный сеанс с одним удаленным компьютером, используйте командлет Enter-PSSession. Например, чтобы запустить интерактивный сеанс с удаленным компьютером Server01, введите:
В командной строке отобразится имя удаленного компьютера. Все команды, введенные в командной строке, запускаются на удаленном компьютере, а результаты отображаются на локальном компьютере.
Чтобы завершить интерактивный сеанс, введите:
См. дополнительные сведения о командлетах Enter-PSSession и Exit-PSSession:
- Enter-PSSession
- Exit-PSSession;
Выполнение удаленной команды
Чтобы выполнить команду на одном или нескольких компьютерах, используйте командлет Invoke-Command. Например, чтобы выполнить команду Get-UICulture на удаленных компьютерах Server01 и Server02, введите:
Выходные данные будут возвращены на ваш компьютер.
Запуск сценария
Чтобы запустить скрипт на одном или нескольких удаленных компьютерах, используйте параметр FilePath командлета . Сценарий должен быть включен или доступен для локального компьютера. Результаты будут возвращены на локальный компьютер.
Например, следующая команда выполняет скрипт DiskCollect.ps1 на удаленных компьютерах Server01 и Server02.
Установка постоянного подключения
Используйте командлет для создания постоянного сеанса на удаленном компьютере. В следующем примере создаются удаленные сеансы на удаленных компьютерах Server01 и Server02. Объекты сеанса хранятся в переменной .
После установки сеансов в них можно выполнить любую команду. Так как сеансы являются постоянными, вы можете собирать данные из одной команды и использовать их в другой.
Например, следующая команда выполняет команду Get-Hotfix в сеансах в переменной $s и сохраняет результаты в переменной $h. Переменная $h создается в каждом сеансе в переменной $s, но она не существует в локальном сеансе.
Теперь вы можете использовать данные в переменной с другими командами в том же сеансе. Результаты отобразятся на локальном компьютере. Пример:
Расширенная служба удаленного взаимодействия
Это и есть служба удаленного взаимодействия Windows PowerShell. Используя командлеты, установленные с Windows PowerShell, можно установить и настроить удаленные сеансы с локальных и удаленных компьютеров, создать настраиваемые и ограниченные сеансы, разрешить пользователям импортировать команды из удаленного сеанса, которые могут неявно выполняться в удаленном сеансе, настроить безопасность удаленного сеанса и многое другое.
Windows PowerShell включает поставщик WSMan. Поставщик создает диск , который позволяет перемещаться по иерархии параметров конфигурации на локальном и удаленном компьютерах.
См. дополнительные сведения о поставщике WSMan и командлетах WS-Management или введите команду в консоли Windows PowerShell.
Дополнительные сведения можно найти в разделе
- Вопросы и ответы об удаленном взаимодействии PowerShell
- Register-PSSessionConfiguration
- Import-PSSession
Справку по ошибкам службы удаленного взаимодействия см. в разделе about_Remote_Troubleshooting.
Список командлетов для Windows PowerShell
Для Windows PowerShell существует огромное количество разных командлетов и описать их все в одной статье не получится. Поэтому предлагаем ознакомиться с самыми востребованными из них:
- Get-Help – получение справки;
- Update-Help – обновление справки;
- Get-Command – поиск командлетов;
- Get-Alias – поиск псевдонимов для командлетов;
- Get-PSDrive – просмотр подключенных дисков;
- Get-Member – просмотр свойств и методов, которые есть у объекта;
- Get-WindowsFeature – просмотр сведений о доступных ролях и компонентах сервера;
- Install-WindowsFeature (аналог Add-WindowsFeature) — устанавливает роли или компоненты на нужный сервер;
- Uninstall-WindowsFeature (аналог Remove-WindowsFeature) – удаляет роли или компонента сервера;
- Get-History – просмотр истории команд, которые вводились в этой сессии;
- Get-Variable – просмотр списка переменных и их значений;
- New-Variable – создание новой переменной;
- Set-Variable – установка значения переменной;
- Clear-Variable – удаление значения переменной;
- Remove-Variable – удаление переменной и ее значения;
- Format-List – просмотр результата команды в виде списка свойств, где в каждой строке отдельное свойство;
- Format-Table — просмотр результата команды в формате таблицы;
- Format-Wide — просмотр результата команды в виде широкой таблицы, в которой показывается только одно свойство для каждого объекта;
- Format-Custom – просмотр результата команды с использованием пользовательского представления;
- Export-Csv – экспорт данных в формат CSV;
- Import-Csv – импорт данных из CSV файла;
- Export-Clixml — экспорт данных в формат XML;
Полный список командлетов для Windows PowerShell вы можете получить, выполнив командлет «Get-Command -CommandType cmdlet».