Как через powershell

Глава 1. Начало работы с PowerShell

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

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

Что нужно, чтобы начать работу с PowerShell?

Все современные версии операционных систем Windows поставляются с установленной оболочкой PowerShell. Если вы используете версию, предшествующую 5.1, следует установить последнюю версию.

  • Сведения об обновлении до версии PowerShell 5.1 см. в разделе Обновление существующей версии Windows PowerShell.
  • Сведения об установке последней версии PowerShell см. в статье Installing Windows PowerShell.

Где найти PowerShell?

Самый простой способ найти PowerShell в Windows 10 — ввести PowerShell в строке поиска, как показано на рис. 1-1.

Обратите внимание, что на рис. 1-1 показаны четыре разных ярлыка для PowerShell. Компьютер, используемый в демонстрационных целях в этой книге, работает под управлением 64-разрядной версии Windows 10, поэтому существует 64-разрядная версия консоли PowerShell и PowerShell ISE (интегрированной среды сценариев) и 32-разрядная версия каждой из них (обозначена суффиксом (x86) на ярлыках). Если вы работаете с 32-разрядной версией Windows 10, у вас будет только два ярлыка. У этих элементов нет суффикса (x86), но они являются 32-разрядными версиями. Если у вас установлена 64-разрядная операционная система, рекомендуется запускать 64-разрядную версию PowerShell, только если вас нет особой причины для запуска 32-разрядной версии.

Сведения о запуске PowerShell в других версиях Windows см. в статье Запуск Windows PowerShell.

Как запустить 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 с повышенными привилегиями для предотвращения проблем, связанных с управлением доступом пользователей, влияет только на команды, выполняемые на локальном компьютере. Он не влияет на команды, предназначенные для запуска на удаленных компьютерах.

Какую версию PowerShell я использую?

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

Более новые версии Windows PowerShell распространяются в составе Windows Management Framework (WMF). Конкретная версия .NET Framework зависит от версии WMF. Сведения об обновлении до версии PowerShell 5.1 см. в разделе Обновление существующей версии Windows PowerShell.

Политика выполнения

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

Версия операционной системы Windows Политика выполнения по умолчанию
Server 2019 Удаленно подписанная
Server 2016 Удаленно подписанная
Windows 10 С ограниченным доступом

Любая команда PowerShell может выполняться в интерактивном режиме, независимо от настройки политики выполнения. Политика выполнения влияет только на команды, выполняемые в сценарии. Командлет Get-ExecutionPolicy используется для определения текущего параметра политики выполнения, а командлет Set-ExecutionPolicy используется для изменения политики выполнения. Рекомендуется использовать политику RemoteSigned, которая требует, чтобы предназначенные для выполнения скачиваемые сценарии были подписаны доверенным издателем.

Проверка текущей политики выполнения

Если для политики выполнения задано С ограниченным доступом, сценарии PowerShell вообще не запускаются. Это параметр по умолчанию для всех клиентских операционных систем Windows. Чтобы продемонстрировать проблему, сохраните следующий код как файл .ps1 с именем Stop-TimeService.ps1 .

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

Обратите внимание, что в сообщении об ошибке, приведенном в предыдущем наборе результатов, указывается точная проблема (в этой системе отключено выполнение сценариев). При выполнении в PowerShell команды, которая создает сообщение об ошибке, обязательно следует прочесть сообщение об ошибке, а не просто перезапустить команду и надеяться на ее успешное завершение.

Измените политику выполнения PowerShell на удаленно подписанную.

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

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

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

Сводка

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

Просмотр

  1. Как определить версию PowerShell, установленную на компьютере?
  2. Почему важно запускать PowerShell с повышенными правами администратора?
  3. Как определить текущую политику выполнения PowerShell?
  4. Чему препятствует политика выполнения PowerShell по умолчанию на клиентских компьютерах Windows?
  5. Как изменить политику выполнения PowerShell?

Рекомендуем прочесть

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

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

ИТ База знаний

Курс по Asterisk

Полезно

— Узнать IP — адрес компьютера в интернете

— Онлайн генератор устойчивых паролей

— Онлайн калькулятор подсетей

— Калькулятор инсталляции IP — АТС Asterisk

— Руководство администратора FreePBX на русском языке

— Руководство администратора Cisco UCM/CME на русском языке

— Руководство администратора по Linux/Unix

Навигация

Серверные решения

Телефония

FreePBX и Asterisk

Настройка программных телефонов

Корпоративные сети

Протоколы и стандарты

Популярное и похожее

Курс по сетям

Пошаговый ввод в домен Windows 10

Основные команды cmd в Windows

Поднимаем контроллер домена на Windows 2008 R2

Windows Terminal: Советы и хитрости

Вывод Windows 10 из домена

Создание загрузочного USB накопителя для установки Windows Server 2019

Новый монитор производительности для Windows Server

Еженедельный дайджест

10 крутых вещей, которые можно сделать с помощью Windows PowerShell

Трюки с Windows PowerShell

Если PowerShell кажется вам сложным для использования его для повседневных задач, «круто» может быть не тем словом, которое у вас ассоциируете с ним. Но PowerShell является основной частью Exchange, Windows Server и SQL Server, и он обладает огромными возможностями, которые мы все должны понять, принять и использовать, чтобы облегчить и автоматизировать наши текущие дела.

Обучайся в Merion Academy

Пройди курс по сетевым технологиям

Начать

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

Будьте очень осторожны так как это инструмент достойный своего названия (Power – Сила, Shell – Оболочка). PowerShell может легко вызвать массовые изменения конфигурации, как положительные, так и отрицательные, поэтому для безопасности создайте тестовую или лучше всего виртуальную среду для вашего обучения и тестирования. Если вы будете тестировать у себя на компьютере, то создайте точку восстановления системы. Чтобы во время выполнения одной из следующих команд что-то пойдет не так, вы всегда могли восстановить свой компьютер.

10 крутых вещей, которые можно сделать с помощью Windows PowerShell

1: Отчёты о подключённых USB оборудованиях

PowerShell даёт возможность работать с Windows Management Instrumentation (WMI). С помощью PowerShell, вы можете сделать WMI — запрос для получения информации о USB — устройствах, которые установлены как на локальной, так и на удаленных системах.

В данной команде будет применен фильтр возврата предшествующих и зависимых полей с компьютера DBSERVER1 . Если вы хотите получить полную информацию о USB-устройствах в системе, вы можете убрать оператор | и fl . Это весьма удобный способ для ведения отчётов по серверам, к которым подключены USB — устройства с лицензией.

2: Выполнение ваших любимых задач CMD в PowerShell

Да, вы можете перестать использовать командную строку (CMD) и начать выполнять все те же задачи в PowerShell. Это поможет сделать процесс обучение немного проще и помочь вам лучше ознакомиться с интерфейсом. К сожалению, PowerShell невозможно вызвать через окно «выполнить» с помощью трёх букв, подобно CMD. Но вы можете назначить сочетание клавиш для быстрого запуска PowerShell, например, Ctrl + Shift + P .

3: Принудительное завершение процесса в PowerShell

Если зависла какая-то служба Windows, вы можете использовать PowerShell для завершения процесса так же, как и через Диспетчер Задач. Например, для закрытия BadThread.exe , вы делаете следующее:

После того, как мы идентифицируем Process ID , вы можете принудительно закрыть зависший процесс введя команду:

В тот же момент процесс BadThread будет принудительно остановлен, и вы сможете возобновить попытку запуска службы. Которую можете сделать прямо здесь, в PowerShell.

4: Используйте PSDrive для большего, чем просто просмотр дисков

Команда PSDrive позволяет просматривать объекты Windows за пределами традиционных сетей, а также локальных или съемных дисков. Например, чтобы посмотреть диски в разделе верхнего уровня реестра HKEY_LOCAL_MACHINE , вы можете использовать HKLM PSDrive . Чтобы войти в реестр, введите следующую команду:

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

5: Экспорт NTFS разрешений папки – как обычно, так и рекурсивно

Управление разрешениями NTFS — это отдельный вопрос, но с помощью PowerShell можно экспортировать список разрешений для аудита доступов или для быстрого анализа списка ACLs для настройки политик безопасности. Это лучший вариант для создания отчётности в формате периодически запускаемого скрипта, или вы можете запускать его по требованию, например, для диагностики конкретной проблемы, связанной с доступами. Например, используя следующую команду:

Это даст вам быстрый ответ с результатами ваших прав безопасности по указанному пути N:Data (обратите внимание, что команда не даёт доступ к ресурсу). Данная команда не даст нам общую картину всех доступов всего пути, а только отчёт только об указанном пути. Но если вы хотите включить рекурсию для всего пути, вы можете использовать другую команду. Для того же пути N:Data вы должны использовать командлет Get-ChildItem (cmdlet) в PowerShell в сочетании с командлетом Get-Acl . Рассмотрим следующий пример:

Данная команда будет отображать списки ACL для содержимого всего пути N:Data . Разберём как это работает: командлет Get-ChildItem показывает нам все объекты файловой системы по указанному пути N:Data , а дальше весь список объектов передаётся командлету Get-Acl который предоставляет результаты (списки ACL) для каждого объекта.

Если вы хотите заархивировать данные в документ (CSV), вам нужно добавить | export-csv c:filename.csv в конце команды. Кроме этого вы можете извлечь в обычный текстовый файл с помощью добавления командлета > C:filename.txt . Обратите внимание что, когда вы используете параметр -recurse, он будет применяться во всех вложенных файлах и папках. Поэтому будьте внимательны, когда используете его для инвентаризации объёмных томов или же по сети.

6: Отличия PowerShell 2.0

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

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

При этом не забудьте, что для PowerShell 2.0 требуется пакет WS-MAN v1.1 и Microsoft.NET Framework 3.0 для графического интерфейса.

7: Горячие клавиши в графическом интерфейсе PowerShell

Если вы знакомы со средой Microsoft SQL Query Analyzer, вы по достоинству оцените некоторые из этих сочетаний клавиш. В PowerShell GUI вы можете выбрать одну или несколько строк и выполнить их разом одним нажатием клавиши F5 . Кроме того, если вы изменили скрипт, то для экономии времени при редактировании и тестировании доступны привычные Ctrl + S для сохранения, Ctrl + Z для отмены, Ctrl + C для копирования и Ctrl + V для вставки.

8: Фоновый режим для длительных задачи

Если вы собираетесь использовать команду, выполнение которого займёт некоторое время, вы можете запустить PowerShell в фоновом режиме до её завершения. Таким образом, можно отправить серию команд на автоматическое выполнение по своему собственному расписанию. Чтобы запустить команду в фоновом режиме необходимо добавить в начало параметр –psjob . А ещё можно узнать о состоянии любого из заданий с помощью следующей команды:

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

С помощью следующей команды вы можете удалить неудачную задачу, указав ID Session в конце команды:

9: Вставка временных рамок для вывода команд PowerShell

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

Команды Вывод
«$(Get-Date -format g) Start logging» 20/4/2020 7:45 AM
«$(Get-Date -format F) Start logging» Friday, December 23, 2019 8:26:24 AM
“$(Get-Date -format o) Start logging» 2019-11-17T19:26:24.0479860-06:00

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

10: Вывод результатов с задержкой

В PowerShell некоторые команды выводят информацию на экран быстрым прокручиванием. Если вы не экспортируете данные в файл, будет невозможно просмотреть их на экране. Давайте ещё раз воспользуемся командлетом Get-ChildItem из предыдущих примеров. Эта команда может выводить множество результатов в зависимости от указанного пути. Для упрощения просмотра выводимых данных на экране мы воспользуемся функцией, которая называется EasyView . Данная функция позволяет нам просмотреть результаты на экране путем отображения одной строки каждые полсекунды. Функция EasyView создаётся следующим образом:

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

Функция EasyView настроена на отображение строк с интервалом в полсекунды. Вы также можете настроить интервал в миллисекундах.

Итоги

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

Запуск скриптов PowerShell

PowerShell — это новая командная оболочка для Windows, которая по задумкам Microsoft должна вытеснить и заменить cmd. По-умолчанию, эта оболочка уже идет в составе Windows 7 и выше. Если у вас более старая операционная система или вы просто хотите скачать более свежую версию PowerShell, сделать это можно здесь: https://technet.microsoft.com/en-us/scriptcenter/dd742419.aspx

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

Есть несколько различных способов запуска скрипта, ниже приведены основные:

  1. Запустить оболочку PowerShell и в ней запустить скрипт (ввести путь до файла и имя файла, например, так: C:Scriptstest.ps1, или перейти в папку скрипта командой cd C:Scripts и запустить его командой .test.ps1) Оболочку можно найти и запустить множеством способов. Один из способов — через меню «Пуск». Для Windows 7 — нужно зайти во «Все программы» — «Стандартные» — «Windows PowerShell» и запустить оболочку «Windows PowerShell». Для Windows 10 — нужно найти группу на букву «W» и в ней вы найдете «Windows PowerShell».
  2. Запустить «Интегрированную среду сценариев Windows PowerShell ISE» — это программа — среда разработки, позволяющая редактировать и отлаживать скрипты PowerShell, которая так же есть по-умолчанию вместе с самим PowerShell. Запустив ее, нужно просто нажать кнопку «Открыть» или зайти в меню Файл — Открыть и выбрать нужный скрипт, затем нажать F5 или кнопку «Выполнить скрипт».Найти Windows PowerShell ISE можно там же, где и оболочку PowerShell — в меню «Пуск».
  3. Запустить стандартную коммандную строку и в ней написать:
    powershell -file (пример: powershell -file myscript.ps1)

Если вы раньше не запускали скрипты PowerShell, то скорее всего, вы получите сообщение: Не удается загрузить файл , так как выполнение скриптов запрещено для данной системы. Введите «get-help about_signing» для получения дополнительных сведений. Связано это с тем, что из соображений безопасности и недопущения случайного выполнения вредоносного кода, все скрипты должны быть подписаны цифровой подписью.

Как разрешить выполнение неподписанного скрипта PowerShell?

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

Set-ExecutionPolicy RemoteSigned -Scope Process

2. При запуске из стандартной коммандной строки использовать параметр -executionpolicy, т.е. запускать скрипт так:

powershell -executionpolicy RemoteSigned -file

Оба способа устанавливают политику только для текущего сеанса, при этом, политика безопасности выполнения скриптов PowerShell, прописанная в реестре, не будет изменена и останется прежней. Если вы хотите поменять политику безопасности выполнения скриптов «на постоянно», то используйте такой способ:

3. Разрешить запуск навсегда : запустить оболочку PowerShell от имени «Администратора», затем выполните команду:

Set-ExecutionPolicy RemoteSigned

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

Примечание: Если скрипт был загружен из интернета, то чтобы избежать запроса на подтверждение запуска, нужно вместо RemoteSigned использовать Bypass — полное отключение любых запросов и предупреждений.

Как запустить скрипт PowerShell в фоновом режиме?

Для этого достаточно использовать параметр запуска -WindowStyle, который может принимать значения: Normal, Minimized, Maximized и Hidden. Таким образом, чтобы запустить неподписанный скрипт в фоновом режиме, нужно выполнить команду:

powershell -executionpolicy RemoteSigned -WindowStyle Hidden -file

Так же можно еще при желании добавить -NonInteractive, чтобы скрипт не задавал никаких вопросов. Таким образом, скрипт выполнится незаметно для пользователя. Будmте внимательны, используя такой способ.

Запуск скрипта PowerShell c параметрами

Собственно запуск нужно делать как если бы вы запускали обычную программу или bat-файл с параметрами. Например, для запуска скрипта с параметрами из командной, можно написать такую команду:

powershell -executionpolicy RemoteSigned -file param1 param2 «еще один текстовый параметр»

В самом скрипте вы можете получить эти параметры так:

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

Как запустить скрипт PowerShell с помощью ярлыка?

Осуществить такую задачу можно двумя способами:

  1. Создать bat/cmd файл, в котором прописать команду для запуска скрипта (с параметрами вы ознакомились выше)
  2. Создать ярлык на PowerShell, который можно найти в папке c:WindowsSystem32WindowsPowerShellv и в свойствах ярлыка в поле «Объект» дописать необходимые параметры.

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

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

Запуск программы из PowerShell

Задача запустить из PowerShell какой либо исполняемый файл (программу или утилиту командной строки) встречается достаточно часто. PowerShell предлагает для этого несколько различных способов, которые мы и рассмотрим далее в этой статье. Начнем с самого простого…

Прямой запуск

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

Set-Location ″C:Program Files″
.Hello.exe

Обратите внимание, что даже находясь в нужном каталоге, требуется указывать относительный путь к исполняемому файлу. Исключение составляют файлы из директорий, перечисленных в переменной окружения (path). Например различные встроенные программы и утилиты (notepad, calc, ping и т.п.), находящиеся в директории WindowsSystem32, можно запускать без указания пути.

Оператор &

Если необходимо указать полный путь к исполняемому файлу, то можно воспользоваться оператором & (оператор вызова). Он позволяет выполнить строку текста, указанную в кавычках, как единую команду. Например:

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

& ′C:Program FilesHello.exe′ ′Hello, world′

При желании можно указать нескольких аргументов через запятую:

& ′C:Program FilesHello.exe′ ′Hello,′, ′ world′

Для удобства команду и аргументы можно поместить в переменные:

$exe = ′C:Program FilesHello.exe′
$arg1 = ′Hello′
$arg2 = ′world′
& $exe $arg1 $arg2

Ну и если аргументов много, то их можно объединить, воспользовавшись такой конструкцией:

$exe = ′C:Program FilesHello.exe′
$allargs = @(′Hello,′,′world′)
& $exe $allargs

Invoke-Expression

Командлет Invoke-Expression работает примерно так-же, как и оператор & — берет текстовую строку и выполняет ее в виде команды. Например:

Invoke-Expression -Command ′C:WindowsHello.exe′

Однако у него есть один большой недостаток, а именно — неумение работать с пробелами. К примеру, следующая команда вызовет ошибку:

Invoke-Expression -Command ′C:Program FilesHello.exe′

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

Invoke-Expression -Command ″C:′Program Files′Hello.exe″

Start-Process

Командлет Start-Process запускает указанный файл в виде процесса, используя метод Start .NET класса Process. Например:

Start-Process -FilePath ′C:Program FilesHello.exe′

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

Start-Process -FilePath ′C:Program FilesHello.exe′ -NoNewWindow -Wait

Также Start-Process позволяет передать в процесс дополнительные аргументы:

Start-Process -FilePath ′C:Program FilesHello.exe′ -ArgumentList ′Hello, world′ -NoNewWindow -Wait

По умолчанию командлет ничего не возвращает, но с помощью параметра -PassThru можно заставить его вернуть объект процесса. Этот объект очень удобно поместить в переменную:

$process = Start-Process -FilePath ′C:Program FilesHello.exe′ -Wait -PassThru

из которой можно затем можно узнать многие полезные вещи, такие как статус:

или код выполнения:

В принципе .NET классом Process можно воспользоваться напрямую, без командлета Start-Process. К примеру, запустить процесс можно командой:

Такой способ достаточно неудобен и громоздок (на мой взгляд), но чуть более гибок в использовании. Для примера запустим нашу программу в текущем окне, передадим в нее аргументы и заберем результат выполнения:

$process = New-Object -TypeName System.Diagnostics.Process
$process.StartInfo.FileName = ″C:Program FilesHello.exe″
$process.StartInfo.Arguments = ″Hello,world″
$process.StartInfo.RedirectStandardOutput = $true
$process.StartInfo.UseShellExecute = $false
$process.Start()
$process.WaitForExit()
$process.StandatdOutput.ReadToEnd()

С помощью WMI можно сделать практически все, в том числе и запустить программу. Для этого вполне подойдет метод Create WMI-класса Win32_Process. Этот метод запускает процесс на локальном или удаленном компьютере через RPC. Например, для выполнения программы на локальном компьютере можно воспользоваться такой командой:

А для выполнения на удаленном компьютере команда будет выглядеть так:

Как вариант, можно воспользоваться командлетом Invoke-WmiMethod:

Invoke-WmiMethod -Class Win32_Process -Name Create -ArgumentList ″C:Program FilesHello.exe″

Либо командлетом Invoke-CimMethod:

Invoke-CimMethod -ClassName Win32_Process -MethodName Create -Arguments @

WMI запускает процесс в отдельном окне и возвращает объект, содержащий идентификатор процесса (ProcessID) и результат выполнения (ReturnValue). ReturnValue может принимать следующие значения:

0 — Sucsessful Completiom
2 — Access Denied
3 — Insufficient Privilege
8 — Uncnown Failure
9 — Path Not Found
21 — Invalid Parameter

Invoke-Command

Командлет Invoke-Command умеет выполнять команды на локальном или удаленном компьютере, используя WinRM. Например, для запуска нашей программы на локальном компьютере используем команду:

При необходимости в программу можно передать аргументы:

Обратите внимание, что Invoke-Command не очень дружит с пробелами, поэтому во избежании ошибок приходится исхитряться с кавычками. Впрочем, подобных проблем можно избежать, например комбинируя использования командлета с оператором &:

В основном Invoke-Command применяется для удаленного управления, его главное достоинство — это возможность одновременного выполнения на нескольких компьютерах. Например:

Invoke-Command -ScriptBlock <″C:′Program Files′Hello.exe″>-ComputerName SRV1,SRV2,SRV3

$scriptblock = <″C:′Program Files′Hello.exe″>
$Computers = @(′SRV1′,′SRV2′,′SRV3′)
Invoke-Command -ScriptBlock $scriptblock -ComputerName $Computers

По умолчанию командлет возвращает результат выполнения программы, а если запустить его в фоновом режиме (параметр -AsJob), то возвращает объект Job:

Invoke-Command -ScriptBlock -ComputerName localhost -AsJob -JobName Hello

Invoke-Item

Командлет Invoke-Item предназначен для применения к файлу действия по умолчанию. Так запустить исполняемый файл можно командой:

Invoke-Item -Path ″C:Program FilesHello.exe″

Однако наиболее удобно использовать Invoke-Item для открытия определенного типа файлов. Например так мы откроем текстовый файл:

Invoke-Item -Path ″C:Filestest.txt″

А так все текстовые файлы в папке:

Invoke-Item -Path ″C:Files*.txt″

Ну и в завершение еще один способ запуска программы из PowerShell — с помощью оболочки cmd. Способ достаточно ″непрямой″, но тем не менее работающий. Следующая команда запускает новый экземпляр cmd, выполняет в нем указанную программу, завершает работу cmd и возвращает результат:

cmd /c ″C:Program FilesHello.exe″

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

Кстати, статья написана по мотивам PowerShell: Deep Dive and Best Practice. Рекомендую почитать, там еще много интересного.

Как запустить Windows PowerShell — 12 способов

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

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

  1. Как открыть PowerShell Windows 10 — 1 способ
  2. Как в Windows 10 запустить PowerShell — 2 способ
  3. Как открыть PowerShell в Windows 7
  4. Запуск Windows PowerShell Windows 8.1 (Windows 8)
  5. Открытие PowerShell из окна «Выполнить»
  6. Как запустить PowerShell из командной строки
  7. Как открыть Windows PowerShell из поиска
  8. Запуск PowerShell из Диспетчера задач
  9. Как запустить PowerShell от имени администратора из Проводника — 1 способ
  10. Открытие PowerShell из папки Проводника — 2 способ
  11. Открытие Windows PowerShell из системной папки
  12. Запуск PowerShell из Панели задач
  13. Выводы статьи
  14. Как запустить PowerShell в Windows (видео)

Начиная с версии Windows PowerShell 2.0, оболочка входит в состав операционных систем Windows 7, Windows 8, Windows 8.1, Windows 10, Windows Serwer 2008 R2, Windows Serwer 2012, Windows Serwer 2016, Windows Serwer 2019.

PowerShell можно установить в операционные системы Windows XP SP3, Windows Vista, Windows Serwer 2003, Windows Serwer 2008 составе комплекта Windows Management Framework. Microsoft Windows PowerShell поддерживает операционные системы Linux и macOS.

В процессе решения некоторых задач у пользователей возникает вопрос о том, как запустить Windows PowerShell на компьютере в разных операционных системах.

В этом руководстве мы рассмотрим несколько способов запуска PowerShell на компьютере в конкретных версиях операционной системы: Windows 10, Windows 8.1 (Windows 8), Windows 7, а также инструкции о других способах, применяемых в любых версиях ОС.

Как открыть PowerShell Windows 10 — 1 способ

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

Для запуска оболочки в Windows 10 можно использовать контекстное меню кнопки «Пуск»:

  1. Щелкните правой кнопкой мыши по меню «Пуск», или нажмите на клавиши «Win» + «X».
  2. В контекстном меню откроются пункты «Windows PowerShell» и «Windows PowerShell (администратор)».

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

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

  1. Запустите приложение «Параметры».
  2. Откройте «Персонализация».
  3. Войдите в раздел «Панель задач».
  4. В опции «Заменить командную строку оболочкой Windows PowerShell в меню, которое появляется при щелчке правой кнопкой мыши по кнопке “Пуск” или при нажатии клавиш Windows + X» передвиньте ползунок переключателя в положение «Включено».

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

Как в Windows 10 запустить PowerShell — 2 способ

Еще один способ, как открыть Windows PowerShell в операционной системе Windows 10 из меню «Пуск».

Выполните необходимые действия:

  1. Кликните левой кнопкой мыши по меню «Пуск».
  2. В списке установленных программ найдите папку «Windows PowerShell», из которой можно запустить PowerShell в различных режимах:
  • Windows PowerShell — запуск обычной оболочки.
  • Windows PowerShell (x86) — запуск оболочки в 32-битной ОС.
  • Windows PowerShell ISE — запуск интегрированной среды сценариев PowerShell (Windows PowerShell Integrated Scripting Environment).
  • Windows PowerShell ISE (x86) — запуск интегрированной среды сценариев для 32-битных систем или объектов.

Windows PowerShell ISE — оболочка PowerShell с расширенными возможностями.

При необходимости, пользователь может запустить PowerShell от имени администратора Windows 10. Запуск от администратора Windows 10 проходит следующим образом:

  1. Нужно щелкнуть правой кнопкой мыши по значку Windows PowerShell.
  2. В контекстном меню «Задачи» нажмите на пункт «Запуск от имени администратора».

  1. На Рабочем столе компьютера откроется окно Windows PowerShell.

Как открыть PowerShell в Windows 7

Пользователи в операционной системе Windows 7 могут запустить PowerShell из меню кнопки «Пуск». Для этого нужно выполнить следующие действия:

  1. Щелкните левой кнопкой мыши по кнопке меню «Пуск».
  2. В списке «Все программы» откройте папку «Стандартные».
  3. Найдите папку «Windows PowerShell», в которой находятся значки для запуска приложения.

Чтобы запустить PowerShell от администратора, кликните по ярлыку приложения правой кнопкой мыши, а в открывшемся контекстном меню выберите «Запустить от имени администратора».

Запуск Windows PowerShell Windows 8.1 (Windows 8)

В операционных системах Windows 8.1 или Windows 8 открытие PowerShell возможно из окна установленных приложений.

  1. На начальном экране нажмите на кнопку «Приложения».
  2. В окне «Приложения» найдите папку «Служебные», в которой размешено приложение Windows PowerShell.

Чтобы в Windows 8.1 или Windows 8 запустить PowerShell с правами администратора, необходимо нажать на значок приложения правой кнопкой мыши, а в контекстном меню выбрать пункт «Запустить от имени администратора».

Открытие PowerShell из окна «Выполнить»

В разных версиях Windows запуск PowerShell происходит идентично с помощью выполнения команды из диалогового окна «Выполнить».

Вам потребуется совершить следующие манипуляции:

  1. Нажмите на клавиши «Win» + «R».
  2. В диалоговое окно «Выполнить» введите команду «powershell» (без кавычек).
  3. Нажмите на кнопку «ОК».

Для запуска оболочки с административными правами в Windows 10, используйте этот способ: после ввода команды удерживайте клавиши «Ctrl» + «Shift», а затем нажмите на клавишу «Enter» или кнопку «ОК» в диалоговом окне.

Как запустить PowerShell из командной строки

При желании пользователь может запустить PowerShell из CMD.exe (командной строки Windows) в разных версиях операционной системы. Это системное средство поможет открыть аналогичное приложение на компьютере.

Запуск PowerShell из командной строки выполняется следующим образом:

  1. Необходимо запустить командую строку от имени администратора или просто открыть командную строку от имени пользователя.
  2. В окне интерпретатора командной строки введите команду «powershell» (без кавычек), а затем нажмите на клавишу «Enter».
  3. Оболочка PowerShell будет запущена в интерфейсе командной строки Windows.

В PowerShell запуск от имени администратора зависит от того, с какими правами вы запустили командную строку.

Как открыть Windows PowerShell из поиска

Запуск PowerShell можно выполнить из поиска Windows любой современной версии ОС.

Нужно совершить следующие действия:

  1. В строку поиска необходимо ввести выражение «powershell» (без кавычек).
  2. Во всплывающем окне появятся результаты с лучшим соответствием.

  1. В Windows 10 выполните запуск PowerShell от имени администратора или с обычными правами. В Windows 8 или в Windows 7 щелкните по приложению правой кнопкой мыши, чтобы запустить оболочку с повышенными правами, выбрав соответствующий пункт контекстного меню.

Запуск PowerShell из Диспетчера задач

Для запуска оболочки можно воспользоваться системным средством — Диспетчером задач.

  1. Запустите Диспетчер задач на ПК.
  2. Войдите в меню «Файл» нажмите на пункт «Запустить новую задачу».

  1. В окне «Создание задачи», в поле «Открыть:» введите «powershell» (без кавычек). Если нужны права администратора, поставьте флажок в пункте «Создать задачу с правами администратора».
  2. Нажмите на кнопку «ОК».

Как запустить PowerShell от имени администратора из Проводника — 1 способ

Быстрый способ открытия PowerShell: запуск приложения непосредственно из системного инструмента — Проводника Windows.

Необходимо использовать следующий метод:

  1. Запустите Проводник.
  2. В адресную строку Проводника введите «powershell» (без кавычек).
  3. Нажмите на клавишу «Enter».

  1. На экране ПК откроется окно оболочки PowerShell.

Открытие PowerShell из папки Проводника — 2 способ

Еще один вариант для запуска оболочки PowerShell из текущей папки в Проводнике:

  1. Войдите в Проводник Windows, откройте нужную папку.
  2. Нажмите на меню «Файл», выберите подходящий вариант запуска: «Запустить Windows PowerShell» или «Запустить Windows PowerShell от имени администратора».

Открытие Windows PowerShell из системной папки

Есть возможности для запуска PowerShell непосредственно из папки «Windows», в которой находится операционная система. Это универсальный способ, работающий в разных версиях Windows.

Пройдите последовательные шаги:

  1. Откройте Проводник Windows.
  2. Пройдите по пути:
  1. В папке «v0» находятся файлы приложения, которые можно запустить на ПК. Щелкните два раза левой кнопкой мыши по файлу «powershell.exe».

Как запустить Windows PowerShell с повышенными правами в этом случае? Щелкните по файлу правой кнопкой мыши, а в контекстном меню нажмите на пункт «Запуск от имени администратора».

Запуск PowerShell из Панели задач

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

  1. Пройдите по пути до файла «powershell.exe» в системной папке «Windows» по пути:
  1. Нажмите правой кнопкой мыши на файл «powershell.exe».
  2. В контекстном меню выберите «Закрепить на панели задач».

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

Выводы статьи

В операционную систему Windows встроена оболочка PowerShell — продвинутый аналог командной строки. В некоторых ситуациях, пользователям может понадобится использовать Windows PowerShell на компьютере для выполнения различных настроек в операционной системе. Запустить PowerShell можно разными способами: из меню кнопки «Пуск», из окна «Выполнить», из командной строки, из поиска, из Проводника, из системной папки «Windows», из Панели задач.