Как запустить Windows PowerShell в Windows 10
В сегодняшней статье мы рассмотрим как разными способами запустить Windows PowerShell в Windows 10.
Открыть PowerShell из строки поиска
В строке поиска напишите PowerShell => нажмите на Windows PowerShell левой кнопкой мыши — если вы хотите открыть PowerShell с правами пользователя под которым вошли в систему, или нажмите на Windows PowerShell правой кнопкой мыши и выберите «Запустить от имени администратора».
Открыть Windows PowerShell из меню «Пуск»
Откройте меню «Пуск» и найдите папку Windows PowerShell (нажмите на нее раз левой кнопкой мыши) => если вы хотите открыть PowerShell с правами пользователя под которым вошли в систему — просто нажмите на Windows PowerShell левой кнопкой мыши. Если вы хотите открыть PowerShell с правами администратора — нажмите на Windows PowerShell правой кнопкой мыши и выберите «Запуск от имени администратора».
Открыть Windows PowerShell из диспетчера задач
В пустом месте нажмите на панель задач правой кнопкой мыши и из контекстного меню выберите «Диспетчер задач» (также диспетчер задач можно запустить одновременно нажав клавиши Ctrl+Shift+Esc).
Если Вы запускаете диспетчер задач первый раз — нужно нажать «Подробнее».
Слева вверху выберите «Файл» => «Запустить новую задачу».
В появившемся окне введите команду powershell и нажмите «ОК», если вы хотите запустить Windows PowerShell с правами пользователя под которым вошли в систему. Если вы хотите запустить Windows PowerShell с правами администратора — поставьте флажок возле «Создать задачу с правами администратора» и нажмите на «ОК».
Открыть Windows PowerShell из выполнить
Нажмите Win+R на клавиатуре.
Напишите команду powershell и нажмите «ОК».
PowerShell запустится с правами пользователя под которым вы вошли в систему, если вы хотите переключиться из обычного режима в режим администратора, введите команду Start-Process powershell -Verb runAs и нажмите Enter.
Открыть Windows PowerShell в проводнике
Первый способ открытия Windows PowerShell в проводнике: в адресной строке напишите команду powershell и нажмите Enter.
Второй способ открытия Windows PowerShell в проводнике: зайдите в «Файл» => Запустить Windows PowerShell => здесь вы можете выбрать запуск PowerShell с правами пользователя под которым вошли в систему или с правами администратора.
Третий способ открытия Windows PowerShell в проводнике: откройте C: \ Windows \ System32 \ WindowsPowerShell \ v1.0 => если вы хотите запустить Windows PowerShell с правами пользователя под которым вошли в систему — просто откройте двойным щелчком левой кнопкой мыши файл powershell. Если вы хотите запустить Windows PowerShell с правами администратора — нажмите на файл powershell правой кнопкой мыши и выберите «Запуск от имени администратора».
Открыть Windows PowerShell из Win+X меню
Если нажать на меню «Пуск» правой кнопкой мыши или нажать клавиши Win+X — перед вами возникнет контекстное меню с различными инструментами. По умолчанию, в нём есть возможность запустить командную строку и командную строку от имени администратора. Если вы используете Windows PowerShell чаще чем командную строку, то можно заменить в этом меню командную строку на PowerShell.
Нажмите правой кнопкой мыши в пустом месте панели задач и выберите «Параметры панели задач» => нажмите на переключатель напротив «Заменить командную строку оболочкой Windows PowerShell в меню, которое появляется при щелчке правой кнопки мыши на кнопке «Пуск» или при нажатии клавиш Win+X», чтобы он стал в положение «Вкл.».
Открыть Windows PowerShell из командной строки
1. Откройте командную строку от имени администратора.
2. Введите powershell и нажмите Enter.
На сегодня все, если вы знаете другие способы или есть дополнения — пишите комментарии! Удачи Вам 🙂
Windows PowerShell – что это такое и как запустить?
Windows PowerShell представляет собой интегрированное средство автоматизации пользовательских сценариев для операционной системы Microsoft Windows, построенное на основе интерфейса командной строки. Оно предназначается главным образом для системных администраторов, а также для всех продвинутых пользователей.
История появления PowerShell в семействе операционных систем Windows такова. Надо сказать, что консольная утилита, позволяющая взаимодействовать с компьютером посредством ввода команд, присутствовала там изначально (собственно, именно посредством такой утилиты когда-то, ещё до широкого распространения средств графического интерфейса пользователя, предполагалось главным образом осуществлять взаимодействие с системой, начиная с MS-DOS самых первых версий).
Сначала существовал довольно ограниченный набор соответствующих команд. Будучи реализованными в составе соответствующей подсистемы ОС (средствами вышеназванной утилиты), они и представляли собой так называемый интерпретатор командной строки. Любые другие задачи могли вызываться из данной оболочки в качестве отдельных программ, оформленных тоже как консольные приложения. Уже в то время имелись и некоторые средства автоматизации задач, реализованные с помощью языка сценариев (с примерами его вы можете познакомиться, открыв в текстовом редакторе любой .BAT-файл).
Очень быстро, однако, стало понятно, что для полноценной автоматизации средств уже имеющегося интерпретатора было недостаточно, особенно после широкого распространения Windows. Правда, уже тогда многие действия удобнее было автоматизировать с помощью приложений, использующих все преимущества графического интерфейса, однако по-прежнему существовала (и существует до сих пор) и потребность в командной строке, позволяющей при достаточном уровне квалификации создавать различные пакетные задания. К сожалению, тогдашний язык сценариев был ещё слишком слаб для реализации сколь либо сложных алгоритмов.
Положение несколько изменилось с появлением Windows 98, в составе которой впервые появляется такое средство, как WSH (Windows Script Host, или сервер сценариев Windows). Оно уже позволяло запускать сценарии с использованием таких скриптовых языков, как JScript и VBScript (и других дополнительно устанавливаемых языковых модулей). К сожалению, у Windows Script Host отсутствует интеграция с существующей командной оболочкой, а также встроенная документация (даже сейчас далеко не все пользователи Windows вообще знают о существовании такого средства). Поэтому в 2003 году Microsoft приступила к разработке новой продвинутой командной оболочки, призванной автоматизировать весь спектр административных задач, впоследствии ставшей известной как PowerShell.
Команды, выполняемые внутри PowerShell, теперь могут представлять собой не только стандартные операции по работе с системой, как раньше, или названия исполняемых файлов, а ещё и целые специализированные классы среды исполнения приложений .NET – так называемые командлеты. Появился и новый улучшенный язык сценариев, включающий в себя реализацию динамических типов, на основе всё того же .NET. Освоив его, продвинутые пользователи теперь могли создавать свои сценарии автоматизации, не прибегая к помощи полноценных сред программирования и таких языков, как C# или VB.NET.
Как запустить PowerShell в Windows?
Для запуска оболочки PowerShell существует несколько способов. Отметим, что её можно запускать как от имени простого пользователя, так и от имени администратора (для этого предусмотрены отдельные пункты меню).
В операционных системах, предшествующих Windows 8, вы можете открыть PowerShell из меню «Пуск», выбрав последовательно пункты «Все программы» и «Стандартные». Также вы можете найти данное средство, введя в строке поиска меню «Пуск» запрос «Интегрированная среда сценариев» или «PowerShell» (для запуска от администратора щёлкните по появившемуся пункту Интегрированная среда сценариев Windows PowerShell и выберите пункт Запуск от имени администратора.
В Windows 8 не имеется штатной поддержки меню «Пуск» (кроме того, которое вызывает оболочку Modern), однако вы легко можете найти PowerShell в контекстном меню, всплывающем по нажатию комбинации клавиш Win-X. Либо нажав правой кнопкой мыши на меню Пуск. Это же относится и к Windows 10.
Также, если вы используете Windows 10, то сможете отыскать соответствующий пункт и во вновь вернувшемся в этой системе меню «Пуск» (или любой существующей реализации этого меню сторонними компаниями).
Наконец, для запуска PowerShell непосредственно из командной строки можно использовать команду PowerShell_ISE или ISE.
На этом все. Всего хорошего!
Запуск исполняемого файла из PowerShell
Задача запустить из PowerShell какой либо исполняемый файл (программу или утилиту командной строки) встречается достаточно часто. PowerShell предлагает для этого несколько различных способов, которые мы и рассмотрим далее в этой статье. Начнем с самого простого…
Прямой запуск
Самый простой способ запустить исполняемый файл в PowerShell — это перейти в директорию с файлом и стартовать его напрямую. Для примера возьмем простенькую программку, выводящую приветствие, и выполним ее командой:
Set-Location ″C:\Program Files″
.\Hello.exe
Обратите внимание, что даже находясь в нужном каталоге, требуется указывать относительный путь к исполняемому файлу. Исключение составляют файлы из директорий, перечисленных в переменной окружения (path). Например различные встроенные программы и утилиты (notepad, calc, ping и т.п.), находящиеся в директории Windows\System32, можно запускать без указания пути.
Оператор &
Если необходимо указать полный путь к исполняемому файлу, то можно воспользоваться оператором & (оператор вызова). Он позволяет выполнить строку текста, указанную в кавычках, как единую команду. Например:
& ′C:\Program Files\Hello.exe′
Поскольку оператор & не анализирует передаваемую команду, то он не может интерпретировать ее параметры. Поэтому дополнительные параметры\аргументы передаются также в виде текста, в кавычках. Для примера возьмем предыдущую программу и немного изменим ее, так что она принимает нужный текст в виде аргумента:
& ′C:\Program Files\Hello.exe′ ′Hello, world′
При желании можно указать нескольких аргументов через запятую:
& ′C:\Program Files\Hello.exe′ ′Hello,′, ′ world′
Для удобства команду и аргументы можно поместить в переменные:
$exe = ′C:\Program Files\Hello.exe′
$arg1 = ′Hello′
$arg2 = ′world′
& $exe $arg1 $arg2
Ну и если аргументов много, то их можно объединить, воспользовавшись такой конструкцией:
$exe = ′C:\Program Files\Hello.exe′
$allargs = @(′Hello,′,′world′)
& $exe $allargs
Invoke-Expression
Командлет Invoke-Expression работает примерно так-же, как и оператор & — берет текстовую строку и выполняет ее в виде команды. Например:
Invoke-Expression -Command ′C:\Windows\Hello.exe′
Однако у него есть один большой недостаток, а именно — неумение работать с пробелами. К примеру, следующая команда вызовет ошибку:
Invoke-Expression -Command ′C:\Program Files\Hello.exe′
Эта особенность делает применение командлета крайне неудобным. Хотя при необходимости подобных ошибок можно избежать с помощью дополнительных кавычек, например так:
Invoke-Expression -Command ″C:\′Program Files′\Hello.exe″
Start-Process
Командлет Start-Process запускает указанный файл в виде процесса, используя метод Start .NET класса Process. Например:
Start-Process -FilePath ′C:\Program Files\Hello.exe′
По умолчанию процесс выполняется в отдельном окне, которое закрывается по окончании процесса. Изменить такое поведение можно с помощью параметров, так следующая команда запустится в текущем окне:
Start-Process -FilePath ′C:\Program Files\Hello.exe′ -NoNewWindow -Wait
Также Start-Process позволяет передать в процесс дополнительные аргументы:
Start-Process -FilePath ′C:\Program Files\Hello.exe′ -ArgumentList ′Hello, world′ -NoNewWindow -Wait
По умолчанию командлет ничего не возвращает, но с помощью параметра -PassThru можно заставить его вернуть объект процесса. Этот объект очень удобно поместить в переменную:
$process = Start-Process -FilePath ′C:\Program Files\Hello.exe′ -Wait -PassThru
из которой можно затем можно узнать многие полезные вещи, такие как статус:
$process.HasExited
время:
$process.ExitTime
или код выполнения:
$process.ExitCode
.NET
В принципе .NET классом Process можно воспользоваться напрямую, без командлета Start-Process. К примеру, запустить процесс можно командой:
[System.Diagnostics.Process]::Start(′C:\Program Files\Hello.exe′)
Такой способ достаточно неудобен и громоздок (на мой взгляд), но чуть более гибок в использовании. Для примера запустим нашу программу в текущем окне, передадим в нее аргументы и заберем результат выполнения:
$process = New-Object -TypeName System.Diagnostics.Process
$process.StartInfo.FileName = ″C:\Program Files\Hello.exe″
$process.StartInfo.Arguments = ″Hello,world″
$process.StartInfo.RedirectStandardOutput = $true
$process.StartInfo.UseShellExecute = $false
$process.Start()
$process.WaitForExit()
$process.StandatdOutput.ReadToEnd()
WMI
С помощью WMI можно сделать практически все, в том числе и запустить программу. Для этого вполне подойдет метод Create WMI-класса Win32_Process. Этот метод запускает процесс на локальном или удаленном компьютере через RPC. Например, для выполнения программы на локальном компьютере можно воспользоваться такой командой:
([wmiclass])″Win32_Process″).Create(′C:\Program Files\Hello.exe′)
А для выполнения на удаленном компьютере команда будет выглядеть так:
([wmiclass])″\\remotecomputer\root\cimv2:Win32_Process″).Create(′C:\Program Files\Hello.exe′)
Как вариант, можно воспользоваться командлетом Invoke-WmiMethod:
Invoke-WmiMethod -Class Win32_Process -Name Create -ArgumentList ″C:\Program Files\Hello.exe″
Либо командлетом Invoke-CimMethod:
Invoke-CimMethod -ClassName Win32_Process -MethodName Create -Arguments @{CommandLine=″C:\Program Files\Hello.exe″}
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 -ScriptBlock {″C:\′Program Files′\Hello.exe″}
При необходимости в программу можно передать аргументы:
Invoke-Command -ScriptBlock {C:\′Program Files′\Hello.exe ″Hello,world″}
Обратите внимание, что Invoke-Command не очень дружит с пробелами, поэтому во избежании ошибок приходится исхитряться с кавычками. Впрочем, подобных проблем можно избежать, например комбинируя использования командлета с оператором &:
Invoke-Command -ScriptBlock {& ′C:\Program Files\Hello.exe′}
В основном 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 {C:\′Program Files′\Hello.exe} -ComputerName localhost -AsJob -JobName Hello
Invoke-Item
Командлет Invoke-Item предназначен для применения к файлу действия по умолчанию. Так запустить исполняемый файл можно командой:
Invoke-Item -Path ″C:\Program Files\Hello.exe″
Однако наиболее удобно использовать Invoke-Item для открытия определенного типа файлов. Например так мы откроем текстовый файл:
Invoke-Item -Path ″C:\Files\test.txt″
А так все текстовые файлы в папке:
Invoke-Item -Path ″C:\Files\*.txt″
CMD
Ну и в завершение еще один способ запуска программы из PowerShell — с помощью оболочки cmd. Способ достаточно ″непрямой″, но тем не менее работающий. Следующая команда запускает новый экземпляр cmd, выполняет в нем указанную программу, завершает работу cmd и возвращает результат:
cmd /c ″C:\Program Files\Hello.exe″
Такое вот изобилие способов запустить программу предоставляет PoSh. И каждый из них хорош для определенных ситуаций.
Кстати, статья написана по мотивам PowerShell: Deep Dive and Best Practice. Рекомендую почитать, там еще много интересного.
Компьютеры и Интернет
Многие пользователи знают о командной строке, в то время как очень небольшое количество людей знают об Windows PowerShell. Вместо командной строки вы можете работать с ОС Windows PowerShell, который обеспечивает больше силы и власти над компьютером с установленной Windows 10. Следовательно, в этой статье мы написали различные советы для разных способов запустить PowerShell от имени администратора в операционной системе Windows 10 от имени администратора. Microsoft уже создала оболочку которая называется оболочка для обработки конфигурации и выполнения задач автоматизации. В Windows PowerShell приходит вам на помощь, когда у вас есть куча административной работы, чтобы её решить.
Например, вы спрашиваете PowerShell чтобы распознавать программы, которые выполняются не точно и вам необходимо убить их процессы. Также в сети вы можете задать вопрос PowerShell и выставлять все установленные USB-устройства на одном или нескольких компьютерах. С помощью PowerShell Вы действительно можете сделать много вещей. Если вы предпочитаете, чтобы работать с ней, прочитайте различные способы, чтобы запустить его в Windows 10 от имени администратора.
Как запустить PowerShell от имени администратора в Windows 10
1. Через проводник
С помощью этого метода, вы можете получить доступ к системе Windows PowerShell для расположения или мест каких-то особенных выбранных дисков или папок.
Запустите проводник, отправляетесь в раздел, где находится ваш диск или лежит папка.
Нажмите на папку который вы хотите запустить в PowerShell и п нажмите на файл в крайней левой части меню.
Из поступивших вариантов, нажмите Открыть Windows PowerShell как администратор.
2. Через Диспетчер задач
Щёлкните правой кнопкой мыши на пустом поле панели задач и нажмите 3 вариант снизу в Диспетчер задач.
Появляется окно диспетчера задач. На левом верхнем углу меню, вы найдёте файл. Нажмите на этот параметр. В выпадающем четвертом месте. выберите первый выбор вверху, который говорит выполнить новую задачу.
Создайте новую задачу в этом окне. В поле текст введите PowerShell и выберите опцию создать задачу с правами администратора.
Нажмите кнопку ОК для продолжения.
PowerShell с правами администратора будет виден на экране.
3. Через Поиск Кортана
Нажмите Кортана поиск и введите PowerShell в поле и нажмите Ввод.
Кортана будет показывать вам вариант PowerShell с его значком.
Щёлкните правой кнопкой мыши на нем и выберите запуск от имени администратора.
PowerShell будет запущен с правами администратора.
4. Через проводник, но на этот раз правой кнопкой мыши на контекстное меню.
Открыть проводник на экране и идите по пути –
C:\Windows\System32\WindowsPowerShell\v1.0
Ищите PowerShell.ехе который лежит в средней части проводника. Щёлкните правой кнопкой мыши на нем он на втором месте с верху, и запустите от имени администратора.
С этими 4 способами, вы можете запустить PowerShell от имени администратора в Windows 10.
Выполнение сценариев отключено в этой системе
В операционной системе Windows 10 имеется мощный инструмент для управления и выполнения различных задач — это PowerShell. Эта консоль предназначена для администраторов, поскольку она позволяет им контролировать всю операционную систему с помощью сценариев (script). PowerShell используется многими фоновыми приложениями для внесения изменений в систему и это ставит под угрозу безопасность нашего ПК.
Сценарий (script) — простая программа написана в коде, который работает линейно на нашем компьютере. Мы можем создавать и выполнять собственные сценарии для автоматизации задач, или приложения могут выполнять их для выполнения определенных конфигураций и задач. По умолчанию Windows 10 не запрещает ни приложениям, ни нам запускать сценарии в системе, если они подписаны или являются «своими». Проблема возникает, когда мы запускаем свой скрипт, и нам выдает ошибку «Выполнение сценариев отключено в этой системе«. Это многоуровневая мера безопасности в PowerShell, которая предотвращает запуск вредоносных сценариев и может нанести вред системе. Давайте разберем, как изменить политики безопасности для PowerShell.
Политики выполнения скриптов в PowerShell
Если вы увидели ошибку «Выполнение сценариев отключено в этой системе«, то можем проверить конфигурацию политик для запуска сценариев, которые настроены в Windows 10. Откройте PowerShell от имени администратора и:
Get-ExecutionPolicy -List
Мы можем видеть несколько уровней разрешений политик для запуска сценариев.
Чтобы изменить политику запуска скрипта, вы должны знать различные уровни привилегий, которые мы можем назначить каждому из областей.
- Restricted: заблокировано выполнение любых скриптов, но разрешается работа интерактивных команд.
- RemoteSigned: загруженные скрипты должны быть подписаны доверенным издателем. Локальные скрипты работают без подписи
- AllSigned: разрешает выполнение любого подписанного скрипта, как локального, так и удаленного (загруженного).
- Unrestricted: без ограничений. Вы можете запустить все сценарии, даже те, которые не подписаны.
Когда вы знаете условия и ограничения скриптов, то можете изменить их. К примеру, чтобы исправить ошибку «Выполнение сценариев отключено в этой системе» достаточно ввести один апплет. Откройте PowerShell от имени админа и:
Set-ExecutionPolicy Unrestricted -Scope CurrentUser
— запуск без ограничения для пользователя.Set-ExecutionPolicyRestricted -Scope CurrentUser
вернуть назад, если будет нужно.
Разрешает без ограничений выполнять сценарии для локального пользователя. Ключ -Scope определяет, к чему применяется изменение политики. Когда вы вводите «CurrentUser«, то применяется только к текущему пользователю, а когда вы вводите «LocalMachine«, он применяется ко всей системе.
Если выше способ не помог вам запустить свой скрипт и ошибка «Выполнение сценариев отключено в этой системе» появляется, то можно снять полностью ограничения. Вы должны понимать, что это большой риск и ваш скрипт должен быть безопасен на 101%. Откройте PowerShell от имени админа и:
Set-ExecutionPolicy Unrestricted
— разрешить выполнение скриптов без ограничений.Set-ExecutionPolicy Restricted
— вернуть назад по умолчанию.
comments powered by HyperComments
Как запустить Windows PowerShell ISE на компьютере – INFO-EFFECT
На чтение 1 мин. Опубликовано
Привет ! Сегодня я покажу вам как запустить программу Windows PowerShell ISE на компьютере Windows 10. Данная программа предназначена для выполнения различных сценариев и операций.
В нижнем левом углу экрана откройте меню “Пуск”. В открывшемся окне, в списке всех приложений, найдите букву W, под буквой нажмите на вкладку приложения – Windows PowerShell.
Далее, у вас откроются вложения программы. Вам могут быть доступны:
– Windows PowerShell.
– Windows PowerShell (x86).
– Windows PowerShell ISE.
– Windows PowerShell ISE (x86).
Далее, при запуске обычной программы, у вас откроется синее окно, где вы сможете вводить и выполнять операции.
При открытии программы ISE, у вас откроется окно загрузки – Интегрированная среда сценариев. Дождитесь пока программа загрузится.
Далее, у вас откроется окно Windows PowerShell ISE со вспомогательными инструментами. Справа в боковой панели у вас будут отображаться готовые модули-команды, которые вы можете использовать.
Вы можете выбрать команду и вставить её в окно программы для выполнения заданного сценария.
Как проецировать на компьютере Windows 10 Смотри Здесь !
Остались вопросы ? Напиши комментарий ! Удачи !
Запуск PowerShell скрипта как службы Windows
Из любого скрипта PowerShell можно сделать службу Windows, которая работает в фоновом режиме и запускается автоматически при загрузке сервера. Вы можете создать службу Windows с помощью утилит srvany.exe и instsrv.exe (из состава Windows Server Resource 2003 Kit), позволяющих запустить процесс powershell.exe с параметром в виде пути к ps1 файлу скрипта. Основной недостаток такого способа создания службы — srvany.exe не контролирует выполнение приложения (скрипта PowerShell в нашем случае) и, если приложение падает (зависает), то служба это не видит и продолжает работать. В этой статье для создания службы Windows из файла со скриптом PowerShell мы будем использовать утилиту NSSM (Non-Sucking Service Manager – оставим без перевода…:)), которая лишена этих недостатков.
Вы можете скачать и установить NSSM вручную или через Chocolately. Сначала нужно установить сам Choco:
Set-ExecutionPolicy Bypass -Scope Process -Force; `
iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
Затем установим пакет NSSM:
choco install nssm
В этом примере мы будем в реальном времени отслеживать изменения определенной группы AD (скрипт из этой статьи) и при изменении оповещать администратора безопасности всплывающим уведомлением и письмом.
Итак, у нас имеется код, который нужно сохранить в PS1 файл. Добавим бесконечный цикл, который раз в минуту выполняет проверку:
while($true) {
#Ваш PS код
Start-Sleep –Seconds 60
}
Создать службу из скрипта PowerShell при помощи NSSM можно прямо из PowerShell :):
$NSSMPath = (Get-Command "C:\tools\nssm\win64\nssm.exe").Source
$NewServiceName = “CheckADGroupSrv”
$PoShPath= (Get-Command powershell).Source
$PoShScriptPath = “C:\tools\CheckADGroup\checkad.ps1”
$args = '-ExecutionPolicy Bypass -NoProfile -File "{0}"' -f $PoShScriptPath
& $NSSMPath install $NewServiceName $PoShPath $args
& $NSSMPath status $NewServiceName
Запустим новую службу:
Start-Service $NewServiceName
Проверим статус службы с помощью PowerShell:
Get-Service $NewServiceName
Итак, вы создали и запустили новую службу Windows. Проверим, что она появилась в консоли управления службами services.msc
Служба CheckADGroupSrv действительно появилась, она настроена на автоматический запус и в данный момент запущена (Running). Как вы видите, ваш PowerShell скрипт запущен внутри процесса nssm.exe.
Обратите внимание, что служба запущена из-под учетной записи System. Если вы используете в своих PS скриптах другие модули (в моем случае для получения состава доменной группы безопасности используется командлет Get-ADGroupMember из модуля Active Directory для Windows PowerShell), этот аккаунт должен иметь доступ к файлам модуля и права на подключение к AD (в моем случае). Вы так же можете запустить эту службы под другой учётной записью (или аккаунтом gMSA) и предоставить пользователям права на остановку/перезапуск службы, если у них нет прав локального администратора.Чтобы служба могла отображать уведомления в сеанс пользователя (взаимодействовать с рабочим столом) нужно на вкладке “Вход в систему” (Log on) включить опцию “Разрешить взаимодействие с рабочим столом” (Allow service to interact with desktop).
Чтобы это работало в Windows 10 / Windows Server 2012 R2/ 2016 нужно изменить значение DWORD параметра реестра NoInteractiveServices в ветке HKLM\System\CurrentControlSet\Control\Windows на 0 и включить службу обозревателя интерактивных служб (Interactive Services Detection Service):Start-Service -Name ui0detect
Однако в Windows 10 1803 службу Interactive Services Detection Service полностью убрали из системы, и вы более не можете переключиться в нулевую сессию (Session 0), так что вы просто не увидите окна, которые выводятся из-под аккаунта System.
Вы можете изменить описание службы командой:
& $NSSMPath set $NewServiceName description “Мониторинг изменений группы AD”
Чтобы удалить созданную службу можете воспользоваться командой sc delete или
nssm remove CheckADGroupSrv