Как на ос windows 10 открыть powershell, где она находится и 4 способа запуска
Содержание:
- Анализ выполнения и завершения, а так же сравнение
- Что такое PowerShell и чем он хорош
- Запуск PowerShell от имени администратора
- Профили пользователей Windows PowerShell
- Передача через конвейер или Pipeline
- Как открыть PowerShell?
- Подписать сценарий
- Особенности запуска скриптов в PowerShell
- Windows PowerShell. Выполнение сценариев отключено в этой системе
- Выполнение сценария
- Other script features
- Получение справки Windows PowerShell
- Установка пакета MSI
Анализ выполнения и завершения, а так же сравнение
Используя предыдущие команды мы можем выполнить некоторую автоматизацию. Например так мы можем увидеть результат выполненных задач:
Часть этих кодов имеет следующую расшифровку (был использован автоматический переводчик):
- 0 — операция успешно завершена.
- 1 — Вызывается неправильная функция или неизвестная функция. 2 Файл не найден.
- 10 — Неправильная среда.
- 267008 — Задача готова к запуску в следующее запланированное время.
- 267009 — В данный момент идет выполнение.
- 267010 — Задача не будет запущена в запланированное время, потому что она отключена.
- 267011 — Запуск еще не был выполнен.
- 267012 — Для этой задачи больше нет запланированных запусков.
- 267013 — Одно или несколько свойств, необходимых для запуска этой задачи по расписанию, не были установлены.
- 267014 — Последний запуск задачи был прерван пользователем.
- 267015 — Либо у задачи нет триггеров, либо существующие триггеры отключены или не установлены.
- 2147750671 — Учетные данные повреждены.
- 2147750687 — Экземпляр этой задачи уже запущен.
- 2147943645 — Служба недоступна (установлен ли флажок «Запускать только при входе пользователя в систему»?).
- 3221225786 — Приложение было закрыто в результате нажатия CTRL + C.
- 3228369022 — Неизвестное программное исключение.
Альтернативное — вы можете открыть интерфейс планировщика и посмотреть какая ошибка отображается там (она будет текстом).
Далее вы можете создать скрипт для поиска сбойных задач. Например меня интересует только задачи со сбоями, а не успешно работающие. Так как я не знаю всех кодов, мне нужно будет исключить только коды успешного выполнения:
Такой же подход можно использовать при поиске странных сервисов-программ. Например у нас есть эталонный компьютер/сервер и на нем созданы все нужные задачи. Всех их мы помещаем в один объект, а затем сравниваем с другими экземплярами:
Далее, через разные средства, мы можем сравнить этот список на других компьютерах:
…
Рекомендую
Что такое PowerShell и чем он хорош
Пользователи UNIX и Linux, а с какого-то мoмента и macOS привыкли к тому, что под рукой всегда есть Bash — немного старомодное, но универсальное и мощное средство, при помощи которого всего парой строк можно творить удивительные вещи. Прописываешь новый скрипт в cron — и готово, он уже крутится на твоем компьютере или на сервере и незаметно делает что-нибудь полезное.
Возвращаясь в Windows (а без этого иногда никак), понимаешь, что скрипты .bat хоть и хороши, но спасают не всегда: очень уж ограниченны их возможности. И если ты до сих пор считал, что PowerShell — это неведомая штуковина, ради которой нужно что-то там поднимaть и настраивать, то не спеши с выводами — он, если разобраться, совсем неплох.
Windows PowerShell — это расширяемое средство автоматизации с открытыми исходниками, которое состоит из оболочки (командной строки) и скриптового языка. Впервые он был показан в 2003 году (тогда он назывался Monad). PowerShell 2.0 вышел в составе Windows 7 и Windows Server 2008 R2 и с тех пор присутствует в Windows в качестве стандартного компонента. Его даже включили в Windows XP SP3. PowerShell построен на основе .NET Framework и интегрирован с ним. PowerShell может обращаться к COM, WMI и ADSI, а также, конечно же, исполняет консольные команды.
В общем, «пошик» имеет крепкие связи с продуктами Microsoft, будь то Active Directory или почтовый сервер Exchange. Это позволяет без подключения к оснастке сервера обращаться к ним через консоль и отдaвать команды.
Если раньше ты не интересовался PowerShell, то, скорее всего, у тебя стоит вторая версия. Я рекомендую обновиться как минимум до третьей — она содержит куда больше возможностей и полезных фишек. Если не вдаваться в подробности, то в PowerShell 2.0 входит около десятка модулей и примерно 350 команд, а в PowerShell 3.0 уже около 2300 командлетов из более чем 70 модулей. «Хакер» также писал о том, чем отличается самый новый PowerShell пятой версии из Windows 10.
Запуск PowerShell от имени администратора
Также поиск в меню «Пуск» — это самый простой способ запустить PowerShell от имени администратора. Для этого нужно воспользоваться поиском и когда программа будет найдена, кликнуть по ней правой кнопкой мышки. В открывшемся меню будет доступен вариант запуска от имени администратора. Данный способ запуска от имени администратора также доступен в Windows 7 и Windows 10
Кроме этого, в Windows 10 есть дополнительная возможность, которая позволяет запускать PowerShell как с правами пользователя, так и от имени администратора. Чтобы воспользоваться этим вариантом нужно кликнуть правой кнопкой мышки по кнопке «Пуск» и в открывшемся меню выбрать «PowerShell».
Профили пользователей Windows PowerShell
Создав профиль Windows PowerShell, вы получаете возможность настраивать окружение и добавлять специфичные для сеанса элементы в каждый создаваемый сеанс.
Профиль Windows PowerShell — скрипт, который выполняется в момент запуска Windows PowerShell. Можно использовать профиль в качестве скрипта, выполняемого при входе в систему, для настройки окружения. Можно добавлять команды, псевдонимы, функции, значения, оснастки, модули и диски Windows PowerShell. Также можно добавлять в профиль другие специфичные для сеанса элементы, тогда они будут доступны в каждом сеансе и не будет необходимости их импортировать или создавать заново.
Windows PowerShell поддерживает несколько профилей для пользователей и ведущих программ. Однако PowerShell не создает профили. В этом разделе описаны профили; также рассказано, как создавать и обслуживать профили на компьютере.
Файлы профилей Windows PowerShell
Windows PowerShell поддерживает несколько файлов профилей. Кроме того, ведущие приложения Windows PowerShell могут поддерживать собственные профили, специфичные для приложения.
Например, консоль Windows PowerShell поддерживает следующие файлы основного профиля. Ниже они указаны в порядке приоритета. Первый профиль имеет наивысший приоритет.
Описание Путь ----------- ---- Текущий пользователь, $Home\Documents\WindowsPowerShell\Profile.ps1 текущее ведущее приложение Текущий пользователь, $Home\Documents\Profile.ps1 все ведущие приложения Все пользователи, $PsHome\Microsoft.PowerShell_profile.ps1 текущее ведущее приложение Все пользователи, все $PsHome\Profile.ps1 ведущие приложения
Более подробную информацию о профилях даст команда:
help about_Profiles
Передача через конвейер или Pipeline
Вы наверняка работали через команды Powershell, которые позволяли использовать конвейер следующим образом:
Если мы захотим использовать подход описанный выше, создав новые команды в виде функций, то конвейер не будет работать:
Выполнив следующую команду мы сможем увидеть, что значения, которые могут приниматься через конвейер помечаются специальным атрибутом:
Таких атрибутов всего два:
- ValueFromPipelineByPropertyName — получение значения из конвейера по имени;
- ValueFromPipeline — получение через конвейер только значения .
Кроме этого, внутри нашей функции, мы должны добавить специальный блок Process. Наш скрипт в итоге будет выглядеть так:
— атрибут расширения функции, который добавляет некоторые возможности в функции позволяя им работать как команду.
Если бы мы не указали блок Process функция бы вернула только последней результат из массива 1..5:
Если наши команды будут иметь критический характер, такой как удаление, или через конвейер может передаваться несколько значений, то стоит использовать атрибут ValueFromPipelineByPropertyName. Таким образом мы исключим попадания через конвейер случайного значения. На примере ниже я изменил
Как уже писалось ValueFromPipelineByPropertyName принимает только именованные параметры и в случае с именем «bad» мы получаем ошибку:
- Не удается привязать объект ввода к любым параметрам команды, так как команда не принимает входные данные конвейера
- The input object cannot be bound to any parameters for the command either because the command does not take pipeline input or the input and its properties do not match any of the parameters that take pipeline input.
Причем передавать именованные параметры через хэш таблицы мы не можем, только через pscustomobject.
Вы можете указывать сразу два атрибута таким образом:
Это позволит использовать и значение с именем, если оно указано либо без него. Это не спасет вас от ситуации, если вы передаете параметр с другим именем:
Передача через конвейер нескольких значений
Для примера рассмотрим ситуацию, где нам нужно передать через конвейер два значения. Если Get-SomeNum будет возвращать массив, то через конвейер у нас будет проходить каждое число по отдельности. Это еще один повод использовать именованные параметры:
Как открыть PowerShell?
Это можно сделать несколькими следующими способами:
- Через Пуск — вы найдёте приложение в общем списке компонентов под буквой W.
- При помощи поиска в Панели задач — откройте её, и введите слово PowerShell для поиска.
- Используя меню «Выполнить» — запустите его через комбинацию Win+R и напишите название утилиты, после чего она будет найдена в системе.
- В коммандере задайте действие PowerShell — но, вы должны знать, что будете работать с приложением через уже запущенную строку, а не в отдельном окне.
- В параметрах Windows выберите «Свойства панели задач» и меню «Пуск». Во вкладке «Навигация» поставьте флажок на строке «Заменить командную строку оболочкой PowerShell…». Теперь вы сможете включать утилиту комбинацией Win+X.
Подписать сценарий
После создания самозаверяющего сертификата можно подписывать сценарии. Если вы используете политику выполнения AllSigned , подписывание сценария позволяет запустить сценарий на компьютере.
Следующий пример скрипта подписывает скрипт. Однако при использовании политики выполнения AllSigned необходимо подписать сценарий перед запуском.
Важно!
Скрипт должен быть сохранен с использованием кодировки ASCII или UTF8NoBOM. Вы можете подписать файл сценария, который использует другую кодировку. Но сценарий не запускается, или модуль, содержащий скрипт, не удается импортировать.
Чтобы использовать этот сценарий, скопируйте следующий текст в текстовый файл и присвойте ему имя .
Чтобы подписать файл скрипта, введите в командной строке PowerShell следующие команды:
После подписания скрипта его можно запустить на локальном компьютере. Однако сценарий не будет выполняться на компьютерах, на которых политика выполнения PowerShell требует наличия цифровой подписи от доверенного центра сертификации. При попытке PowerShell отобразится следующее сообщение об ошибке:
Если PowerShell отображает это сообщение при выполнении скрипта, который не был написан, обработайте файл так, как если бы вы ни использовали любой неподписанный сценарий. Проверьте код, чтобы определить, можно ли доверять сценарию.
Особенности запуска скриптов в PowerShell
Необходимо упомянуть об особенностях запуска скриптов PowerShell. Данное средство администрирования и автоматизации обладает очень высоким потенциалом и является мощным инструментом, поэтому разработчиками было принято решение ограничить запуск скриптов по умолчанию. Существует 4-е основных политики безопасности, регулирующих запуск скриптов на целевом устройстве. Вы можете ознакомиться с ними на данном слайде. У каждой политики свои особенности, и они применимы для разных сценариев. В нашем случае, для практической работы мы разрешим выполнение неподписанных скриптов используя политику «unrestricted»
Windows PowerShell. Выполнение сценариев отключено в этой системе
По умолчанию выполнение сценариев Windows PowerShell в системе запрещено. По соображениям безопасности все скрипты PowerShell должны быть подписаны цифровой подписью, данный метод называется — политика выполнения.
Если скрипт не соответствует этому условию, то выполнение сценариев PowerShell в системе запрещено. Это связано в первую очередь с тем, что в скрипте может находиться вредоносный код, который может нанести вред операционной системе.
PowerShell имеет несколько режимов выполнения, которые определяют, какой тип кода разрешается выполнять. Существует 5 различных режимов выполнения:
- Ограниченный (Restricted) — значение по умолчанию. Блокируется выполнение любых скриптов и разрешается работа интерактивных команд.
- Все подписанные (All Signed) — разрешено выполнение скриптов, имеющих цифровую подпись.
- Удаленные подписанные (Remote Signed) — локальные скрипты работают без подписи. Все скачанные скрипты должны иметь цифровую подпись.
- Неограниченный (Unrestricted) — разрешено выполнение любых скриптов. При запуске не подписанного скрипта, который был загружен из Интернета, программа может потребовать подтверждение.
- Обходной (Bypass) — ничего не блокируется, никакие предупреждения и запросы не появляются.
По умолчанию для PowerShell используется режим «Ограниченный». В этом режиме, PowerShell работает как интерактивная оболочка. Если вы ранее не настраивали PowerShell, то вместо работы скрипта вы увидите сообщение об ошибке, написанное красным шрифтом как на скриншоте ниже.
Самым безопасным способом решения этой проблемы является – изменение политики выполнения на неограниченную, запуск скрипта, и затем обратный возврат к ограниченной политике.
Для изменения политики выполнения на неограниченную, воспользуемся консолью PowerShell открытую с правами Администратора и выполним следующую команду:
После запуска команды вам будет предложено подтвердить изменение политики выполнения. Ответим Y ( Да ).
Теперь можно запустить скрипт. Однако, вы подвергаете систему серьезному риску, так что по окончании работы скрипта, не забудьте вернуть политику выполнения назад в ограниченный режим. Сделать это можно с помощью следующей команды:
После запуска команды вам будет предложено подтвердить изменение политики выполнения. Ответим Y ( Да )
Далее ниже представлены все команды для изменения политики выполнения.
Блокируется выполнение любых скриптов. Значение по умолчанию.
Разрешено выполнение скриптов, имеющих цифровую подпись.
Скрипты, подготовленные на локальном компьютере, можно запускать без ограничений, скрипты, загруженные из Интернета — только при наличии цифровой подписи.
Разрешено выполнение любых скриптов. При запуске не подписанного скрипта, который был загружен из Интернета, программа может потребовать подтверждение.
Ничего не блокируется, никакие предупреждения и запросы не появляются.
Для выполнения выше представленных команд без подтверждения изменения, воспользуйтесь параметром -Force , например выполните команду:
Теперь при выполнении команд не нужно подтверждать производимые изменения.
Выполнение сценария
перед запуском скрипта на Windows необходимо изменить политику выполнения PowerShell по умолчанию. политика выполнения не применяется к PowerShell, работающему на платформах, отличных от Windows.
Политика выполнения по умолчанию предотвращает выполнение всех скриптов, включая скрипты, которые вы пишете на локальном компьютере. Подробнее см. в разделе about_Execution_Policies.
Политика выполнения сохраняется в реестре, поэтому ее необходимо изменить только один раз на каждом компьютере.
Чтобы изменить политику выполнения, используйте следующую процедуру.
В командной строке введите:
или диспетчер конфигурации служб
Изменение вступает в силу немедленно.
Чтобы выполнить сценарий, введите полное имя файла скрипта и полный путь к нему.
Например, чтобы запустить сценарий Get-ServiceLog.ps1 в каталоге C:\Scripts, введите:
Чтобы выполнить сценарий в текущем каталоге, введите путь к текущему каталогу или используйте точку для представления текущего каталога, после чего следует обратная косая черта ( ).
Например, чтобы запустить сценарий ServicesLog.ps1 в локальном каталоге, введите:
Если у скрипта есть параметры, введите параметры и значения параметров после имени файла скрипта.
Например, следующая команда использует параметр ServiceName скрипта Get-ServiceLog, чтобы запросить журнал действия службы удаленного управления Windows.
В качестве функции безопасности PowerShell не выполняет сценарии при двойном щелчке значка скрипта в проводнике или при вводе имени сценария без полного пути, даже если сценарий находится в текущем каталоге. Дополнительные сведения о выполнении команд и сценариев в PowerShell см. в разделе about_Command_Precedence.
Запуск с помощью PowerShell
Начиная с PowerShell 3,0 можно запускать сценарии из проводника.
Чтобы использовать функцию «Запуск с помощью PowerShell», сделайте следующее:
Запустите проводник, щелкните правой кнопкой мыши имя файла скрипта и выберите команду «запустить с помощью PowerShell».
Функция «запустить с помощью PowerShell» предназначена для выполнения скриптов, которые не имеют обязательных параметров и не возвращают выходные данные в командную строку.
Дополнительные сведения см. в разделе about_Run_With_PowerShell.
Выполнение сценариев на других компьютерах
Чтобы запустить сценарий на одном или нескольких удаленных компьютерах, используйте параметр FilePath командлета.
Введите путь и имя файла скрипта в качестве значения параметра FilePath . Скрипт должен находиться на локальном компьютере или в каталоге, к которому локальный компьютер может получить доступ.
Следующая команда запускает сценарий на удаленных компьютерах с именем Server01 и Server02.
Other script features
PowerShell has many useful features that you can use in scripts.
-
— You can use a statement to prevent a script from
running without specified modules or snap-ins and a specified version of
PowerShell. For more information, see about_Requires. -
— Contains the full path and name of the script that is
being run. This parameter is valid in all scripts. This automatic variable is
introduced in PowerShell 3.0. -
— Contains the directory from which a script is being run. In
PowerShell 2.0, this variable is valid only in script modules ().
Beginning in PowerShell 3.0, it is valid in all scripts. -
— The automatic variable contains information
about the current script, including information about how it was started or
«invoked.» You can use this variable and its properties to get information
about the script while it is running. For example, the
.MyCommand.Path variable contains the path and filename of the
script. .Line contains the command that started the script,
including all parameters and values.Beginning in PowerShell 3.0, has two new properties that
provide information about the script that called or invoked the current
script. The values of these properties are populated only when the invoker or
caller is a script.-
PSCommandPath contains the full path and name of the script that called or
invoked the current script. -
PSScriptRoot contains the directory of the script that called or invoked
the current script.
Unlike the and automatic variables, which
contain information about the current script, the PSCommandPath and
PSScriptRoot properties of the variable contain
information about the script that called the current script. -
-
Data sections — You can use the keyword to separate data from logic in
scripts. Data sections can also make localization easier. For more
information, see about_Data_Sections and
about_Script_Internationalization. -
Script Signing — You can add a digital signature to a script. Depending on
the execution policy, you can use digital signatures to restrict the running
of scripts that could include unsafe commands. For more information, see
about_Execution_Policies and
about_Signing.
Получение справки Windows PowerShell
Краткую справку по командлетам Windows PowerShell можно получить введя «-?» сразу после имени командлета, более подробную информацию о командлете можно получить при помощи команд help или get-help с ключами -detailed или -full. При использовании ключа -detailed некоторые технические детали опускаются.
help -full ConvertTo-Html ИМЯ ConvertTo-Html ОПИСАНИЕ Преобразует объекты Microsoft .NET Framework в код HTML, который может отображаться в веб-браузере. СИНТАКСИС ConvertTo-Html -Head <string> -Title <string> -Body <string> -CssUri <Uri> -Property <Object> -As <string> -InputObject <psobject> -PostContent <string> -PreContent <string> <CommonParameters> ConvertTo-Html -Fragment -Property <Object> -As <string> -InputObject <psobject> -PostContent <string> -PreContent <string> <CommonParameters> ОПИСАНИЕ Командлет ConvertTo-Html преобразует объекты .NET Framework в код HTML, который может отображаться в веб-браузере. Этот командлет можно использовать для вывода результатов выполнения команды на веб-страницу. Параметры командлета ConvertTo-Html позволяют выбирать свойства объектов, задавать формат таблиц или списков, определять заголовок HTML-страницы, добавлять текст перед объектом и после него, а также возвращать только фрагмент с таблицей или списком, а не полную страницу. При передаче командлету ConvertTo-Html нескольких объектов Windows PowerShell создает таблицу (или список) на основании свойств первого переданного объекта. Если у оставшихся объектов нет одного из указанных свойств, то значению этого свойства для такого объекта будет соответствовать пустая ячейка. Если же у оставшихся объектов имеются дополнительные свойства, значения этих свойств будут проигнорированы. ПАРАМЕТРЫ ............................ -Body Задает текст для добавления после открывающего тега . По умолчани ю в этом месте нет текста. Требуется? false Позиция? 4 Значение по умолчанию Нет текста. Принимать входные данные конвейера?false Принимать подстановочные знаки?false
Как видим некоторые параметры командлетов например как «-Body» требуют ввода атрибутов (значений), в полной справке с ключом «-full» даётся пояснение про их использование:
- Требуется? — Указывает, будет ли командлет выполнятся при отсутствии этого параметра. Если значение True, значит параметр обязателен. Если он не указан, система запросит его значение
- Позиция? — Показывает, используется ли параметр как именованный или позиционный (под номером). Позиционные параметры должны появляться в указанном месте команды. Если 0 или named, это значит, что при задании значения параметра необходимо указывать его имя. Если атрибут Позиция? имеет целое ненулевое значение, то имя параметра можно не указывать, в этом случае это так званый позиционный параметр. Например, «2» означает, что при отсутствии имени параметра этот параметр должен быть вторым. Если используется имя параметра, параметр может располагаться в любом месте команды.
- Значение по умолчанию — Содержит значение по умолчанию, в случае когда значение не определено явно. Часто обязательным параметрам, так же как и многим необязательным, никогда не присваивается значение по умолчанию. Например, многие команды, чьим входным значением является параметр -path, при отсутствии значения используют текущее местоположение.
- Принимать входные данные конвейера? — Показывает, можно ли (да) или нельзя (нет) посылать объекты в этот параметр по конвейеру. «По имени свойства» означает, что конвейеризованный объект должен иметь свойство с тем же именем, что и имя данного параметра.
- Принимать подстановочные знаки? — Показывает, может ли значение параметра включать подстановочные знаки, такие как «*» и «?».
Можно также получить справку не связанную с командлетами. Для просмотра всех доступных разделов справки используйте команду: Список тем обсуждение которых представлено в справочной службе Windows PowerShell, можно увидеть с помощью команды:
Отметим, что Get-Help выводит содержимое раздела справки на экран сразу целиком. man и help позволяют выводить справочную информацию поэкранно, аналогично команде more интерпретатора cmd.exe.
Установка пакета 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. Значения будут одинаковыми для всех выпусков предварительных и дополнительных версий. Значения отличаются для каждого выпуска основной версии.