Запуск процессов от имени имперсонированного пользователя

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

Пример , запускающего скрипт от имени залогиненного пользователя

В итоге вот что у меня получилось. Солюшн для работы в VisualStudio 2017 и опубликованное приложение, которое имеет кнопку для запуска powershell-скрипта (c:\temp\) и окошко для вывода результатов. Протестировано на IIS под Windows Server 2012R2. Application pool .NET 4 работает в Integrated Mode, от имени Local System. Приложение опубликовано без каких-либо двоичных файлов. То есть изменения можно вносить прямо в код опубликованного приложения.

Как открыть PowerShell?

Это можно сделать несколькими следующими способами:

  • Через Пуск — вы найдёте приложение в общем списке компонентов под буквой W.
  • При помощи поиска в Панели задач — откройте её, и введите слово PowerShell для поиска.
  • Используя меню «Выполнить» — запустите его через комбинацию Win+R и напишите название утилиты, после чего она будет найдена в системе.
  • В коммандере задайте действие PowerShell — но, вы должны знать, что будете работать с приложением через уже запущенную строку, а не в отдельном окне.
  • В параметрах Windows выберите «Свойства панели задач» и меню «Пуск». Во вкладке «Навигация» поставьте флажок на строке «Заменить командную строку оболочкой PowerShell…». Теперь вы сможете включать утилиту комбинацией Win+X.

Запускаем выполнение сценариев PowerShell в Windows

Откройте редактор локальной групповой политики (в поиске Windows или через меню «Выполнить» (вызывается клавишами Win+R) введите «» и нажмите клавишу «Enter» на клавиатуре)…

В левой части окна «Редактор локальной групповой политики» переходим по пути…

Конфигурация компьютера — Административные шаблоны — Компоненты Windows — Windows Powershell…

Справа в рабочем окне находим пункт «Включить выполнение сценариев» и кликаем на него правой кнопкой мыши — выбираем «Изменить».

Ставим точку на «Включено» и проверяем, чтоб в разделе «Параметры:» (Политики выполнения) было выбрано «Разрешить локальные сценарии и удаленные подписанные сценарии» — нажимаем «Применить» …

Читайте также:  Где слушать музыку и подкасты: сравниваем 5 стриминговых сервисов

Еще разок перепроверяем себя…

Кликаем «Ок» и закрываем все ранее открытые окна. Поздравляю, теперь знаете, как включить выполнение сценариев Powershell в Windows 10.

Вышеописанный метод точно работает в Windows 10 Pro и Enterprise. В домашней версии операционной системы Windows 10 нужно погружаться в реестр…

Переменные в Windows PowerShell

В Windows PowerShell есть как встроенные переменные, так и переменные, которые может создавать пользователь. Все переменные в PowerShell можно посмотреть с помощью командлета Get-Variable, также с помощью данного командлета можно получить значение переменной, но обычно к переменной обращаются через знак доллар ($).

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

Для того чтобы создать переменную, необходимо перед ее названием указать знак доллара ($). В случае необходимости можно принудительно указать тип данных переменной в квадратных скобках перед ее названием. Например, ниже мы создаем переменную TestVar с целочисленным типом данных (int) и сразу ее инициализируем.

[int]$TestVar = 100

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

Типов данных переменных в Windows PowerShell очень много, так как они основаны на типах, которые есть в .NET Framework. Но, в то же время, есть и наиболее распространенные типы данных, т.е. базовые, такие как:

  • [int] — целое число, 32 бита;
  • [single] — число с плавающей запятой одинарной точности;
  • [double] — число с плавающей запятой двойной точности;
  • [string] — строка символов, т.е. текст;
  • [char] — один символ;
  • [Boolean] — значения «Истина» или «Ложь»;
  • [datetime] — дата или время.

Для работы с переменными существуют специальные командлеты PowerShell:

  • New-Variable – создание переменной;
  • Set-Variable – присваивание переменной значения;
  • Get-Variable – получение переменной;
  • Clear-Variable – очистка переменной;
  • Remove-Variable – удаление переменой.
Читайте также:  Как настроить роутер smart box билайн — помощь тут

Но, как я уже сказал, с переменной обычно работают, используя знак доллар ($).

Заметка! ТОП 7 популярных языков программирования.

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

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

  • Можно найти PowerShell в меню пуск. Для запуска от администратора используйте контекстное меню. 
  • Можно запустить файл exe в папке C:\Windows\System32\WindowsPowerShell. Для прав администратора, аналогично, используем меню по правому щелчку мышью. 
  • Если ввести powershell в командной строке, также будет запущен нужный инструмент (но в интерфейсе командной строки). Если при этом командная строка была запущена от имени администратора, то и PowerShell будет работать от имени администратора. 

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

Поддержать автораПодписаться на новые статьи

А вдруг и это будет интересно:

  • Лучшие бесплатные программы для Windows
  • Нестандартные способы использования Android
  • Как изменить видеокарту по умолчанию для игр и программ в Windows 10
  • Как отключить обновление вкладок Google Chrome
  • Чёрный экран OBS Studio при записи экрана — причины и как исправить
  • Windows 10 не видит SSD — причины и способы исправить проблему
  • Как включить пароль BitLocker и почему после шифрования он может не запрашиваться

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

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

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

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

Param ($var1, $var2, $var3) echo $var1, $var2, $var3

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

Читайте также:  Контент-план для Инстаграм: 4 шаблона + инструкция

Замена командной строки на PowerShell в контекстном меню «Пуск».

Вот во втором способе, мы использовали контекстное меню «Пуска» и там по-умолчанию добавлена командная строка. Это можно исправить. Скажем для системных администраторов, все чаще нужен PowerShell, вместо командной строки и вместе с добавлением контекстного меню, Microsoft добавили возможность замены командной строки на Windows PowerShell. Для этого, необходимо кликнуть правой клавишей мыши по пустому месту на «Панели задач». И выбрать её «Свойства».

На вкладке «Навигация» ставим галочку на «Заменить командную строку оболочкой Windows PowerShell…» и жмём ОК.

Теперь в контекстном меню можно сразу же запускать Windows PowerShell.

Материал сайта

Еще по теме:

  • Как просто запустить командную строку (от имени…
  • Как запустить очистку дисков стандартные средствами…
  • Как отключить Windows SmartScreen в Windows 10, 8.1, 8
  • Как открыть настройки на Windows 10

Конвейер в PowerShell

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

Конвейер – это передача результата работы командлета через вертикальную черту (|) другому командлету.

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

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

Например, давайте узнаем название самого большого файла в каталоге «C:\Windows\System32» (простой пример конвейера).

Команда

Get-ChildItem -Path «C:\Windows\System32» -File | Sort-Object length -Descending | Select-Object -First 1

Где,

  • Get-ChildItem – командлет получения объектов в указанном каталоге;
  • Sort-Object – командлет для сортировки объектов, в нашем случае мы сортируем по размеру файла (length -Descending);
  • Select-Object – командлет выбора нужных свойств объекта, в нашем случае мы выводим стандартные поля и только самый первый объект, т.е. большой файл (параметр -First 1).

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

Меню Выполнить

Седьмой способ — используйте меню Выполнить, для запуска Windows PowerShell с правами администратора.

Откройте меню Выполнить.

Меню Выполнить
  1. Нажмите сочетание клавиш Windows+R (или щелкните по кнопке Пуск правой клавишей мыши, выберите Выполнить);
  2. Введите команду powershell;
  3. Нажмите сочетание клавиш Ctrl+Shift+Enter.

Современная техника - портал Миникод