Запуск скрипта powershell из командной строки. Windows PowerShell: что это за программа
1. Написание скрипта
Скрипт PowerShell (не важно какой версии) — это текстовый файл с расширением *.ps1 .
Вот пример простого Power Shell срипта (файл systemInfo.ps1 ):
# Retrieve WMI object for the operating system
Get-WmiObject Win32_OperatingSystem
Этот файл можно создавать и редактировать, например, в FAR Manager.
Обратите внимание , что FAR Manager хоть и может работать в консоли Power Shell, но выполняет из-под себя скрипты в окружении обычной Windows-консоли cmd . То есть, FAR Manager можно использовать только для создания и редактирования PowerShell скриптов, но не для запуска. Но прежде чем разочаровываться, прочитайте пункт 3.
2. Запуск срипта
Скрипт нужно выполнять из консоли Power Shell, а не из обычной консоли Windows. В консоли Power Shell необходимо перейти в каталог, где лежит скрипт (командами
cd
), и затем запустить сам скрипт, обязательно прописав перед ним символы
«.
cd \
cd work
.\systemInfo.ps1
или так (просто указывается полный путь к скрипту):
d:\work\systemInfo.ps1
Скорее всего, при запуске скрипта появится следующая ошибка:
Не удается загрузить файл D:\work\systemInfo.ps1, так как выполнение скриптов запрещено для данной системы. Введите «get-help about_signing» для получения дополнительных сведений.
строка:1 знак: 18
CategoryInfo: NotSpecified: (:) , PSSecurityException
FullyQualifiedErrorId: RuntimeException
Ошибка появляется из-за того, что по-умолчанию в Power Shell включена максимальная политика безопасности, которая позволяет выполнять команды PowerShell в командной строке, но не позволяет в той же командной строке выполнить скрипт с командами PowerShell.
Чтобы резрешить выполнение PowerShell скриптов, нужно создать *.bat файл, например enableScript.bat со следующим содержимым:
powershell -Command Set-ExecutionPolicy RemoteSigned
Этот *.bat файл можно выполнить в любой консоли: хоть в PowerShell, хоть в обычной cmd . После выполнения этого файла, PowerShell-скрипты станут запускаться в консоли PowerShell.
3. Запуск PowerShell-скрипта из обычной Windows-консоли cmd
Powershell -File ./systemInfo.ps1
Таким образом можно выполнять скрипты прямо из FAR Manager, и они будут работать.
Но тут есть небольшая тонкость. Параметр -File срабатывает только на локальных путях, даже если путь указан относительный «./» . То есть, если *.ps1 — файл лежит на локальном диске C: или D: , то такой вызов будет работать. Но если попробовать выполнить скрипт, расположенный на доменном ресурсе, то скрипт не будет найден. Возможно, это исправят в следующих версиях PowerShell.
Есть несколько различных способов запуска скрипта, ниже приведены основные:
- Запустить оболочку PowerShell и в ней запустить скрипт (ввести путь до файла и имя файла, например, так: C:\Scripts\test.ps1, или перейти в папку скрипта командой cd C:\Scripts и запустить его командой.\test.ps1)Оболочку можно найти и запустить множеством способов. Один из способов — через меню «Пуск». Для Windows 7 — нужно зайти во «Все программы» — «Стандартные» — «Windows PowerShell» и запустить оболочку «Windows PowerShell». Для Windows 10 — нужно найти группу на букву «W» и в ней вы найдете «Windows PowerShell».
- Запустить «Интегрированную среду сценариев Windows PowerShell ISE» — это программа — среда разработки, позволяющая редактировать и отлаживать скрипты PowerShell, которая так же есть по-умолчанию вместе с самим PowerShell. Запустив ее, нужно просто нажать кнопку «Открыть» или зайти в меню Файл — Открыть и выбрать нужный скрипт, затем нажать F5 или кнопку «Выполнить скрипт».Найти Windows PowerShell ISE можно там же, где и оболочку PowerShell — в меню «Пуск».
- Запустить стандартную коммандную строку
и в ней написать:
powershell -file (пример: powershell -file myscript.ps1)
Если вы раньше не запускали скрипты PowerShell, то скорее всего, вы получите сообщение: Не удается загрузить файл , так как выполнение скриптов запрещено для данной системы. Введите «get-help about_signing» для получения дополнительных сведений. Связано это с тем, что из соображений безопасности и недопущения случайного выполнения вредоносного кода, все скрипты должны быть подписаны цифровой подписью.
Как разрешить выполнение неподписанного скрипта PowerShell?
1. В оболочке PowerShell , перед тем как запускать скрипт, выполнить команду, разрешающую выполнение неподписанных скриптов для текущего сеанса оболочки:
Set-ExecutionPolicy RemoteSigned -Scope Process
2. При запуске из стандартной коммандной строки использовать параметр -executionpolicy, т.е. запускать скрипт так:
Оба способа устанавливают политику только для текущего сеанса, при этом, политика безопасности выполнения скриптов PowerShell, прописанная в реестре, не будет изменена и останется прежней. Если вы хотите поменять политику безопасности выполнения скриптов «на постоянно», то используйте такой способ:
3. Разрешить запуск навсегда : запустить оболочку PowerShell от имени «Администратора», затем выполните команду:
Set-ExecutionPolicy RemoteSigned
Примечание: Если скрипт был загружен из интернета, то чтобы избежать запроса на подтверждение запуска, нужно вместо RemoteSigned использовать Bypass — полное отключение любых запросов и предупреждений.
Как запустить скрипт PowerShell в фоновом режиме?
Для этого достаточно использовать параметр запуска -WindowStyle, который может принимать значения: Normal, Minimized, Maximized и Hidden. Таким образом, чтобы запустить неподписанный скрипт в фоновом режиме, нужно выполнить команду:
Так же можно еще при желании добавить -NonInteractive, чтобы скрипт не задавал никаких вопросов. Таким образом, скрипт выполнится незаметно для пользователя. Будmте внимательны, используя такой способ.
Запуск скрипта PowerShell c параметрами
Собственно запуск нужно делать как если бы вы запускали обычную программу или bat-файл с параметрами. Например, для запуска скрипта с параметрами из командной, можно написать такую команду:
powershell -executionpolicy RemoteSigned -file param1 param2 «еще один текстовый параметр»
В самом скрипте вы можете получить эти параметры так:
Param ($var1, $var2, $var3) echo $var1, $var2, $var3
В интегрированной среде PowerShell ISE запустить скрипт с параметрами можно аналогично, используя область команд.
Как запустить скрипт PowerShell с помощью ярлыка?
Осуществить такую задачу можно двумя способами:
- Создать bat/cmd файл, в котором прописать команду для запуска скрипта (с параметрами вы ознакомились выше)
- Создать ярлык на PowerShell, который можно найти в папке c:\Windows\System32\WindowsPowerShell\v\ и в свойствах ярлыка в поле «Объект» дописать необходимые параметры.
Таким образом, например, чтобы запустить скрипт powershell при входе пользователя, можно просто создать ярлык, как описано во 2-м пункте и поместить его в автозагрузку. Так же, создание ярлыка одним из способов выше позволит легко запустить скрипт от имени администратора или от имени любого другого пользователя как обычную программу.
Скриптовый язык PowerShell — довольно мощный инструмент для решения различных задач, но его можно использовать не только для хороших вещей, но и во вред, поэтому, пользуйтесь им с умом;)
Запуск программы из 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′
$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. К примеру, запустить процесс можно командой:
::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. Например, для выполнения программы на локальном компьютере можно воспользоваться такой командой:
()″Win32_Process″).Create(′C:\Program Files\Hello.exe′)
А для выполнения на удаленном компьютере команда будет выглядеть так:
()″\\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 10 многие пользователи заметили в интерфейсе Проводника кнопку «Запустить PowerShell». В связи с этим в сети появилось много вопросов, пользователей интересовало, что это за программа Windows PowerShell и для чего она нужна. Если вас также интересует этот вопрос, то данный материал должен вам помочь.
Что такое Windows PowerShell
Windows PowerShell – это скриптовый язык и программа с интерфейсом командной строки для выполнения этих скриптов. Данный язык был выпущен в 2006 году в составе второго сервис-пака для Windows XP и с тех пор PowerShell является частью всех операционных систем от Microsoft. В 2008 году появилась вторая версия данного языка, и начиная с Windows 7 используется именно она. Файлы со скриптами Windows PowerShell имеют расширение PS1 и могут запускаться как привычные всем BAT и CMD файлы.
Windows PowerShell – это скриптовый язык, который разрабатывался в первую очередь для бизнес-клиентов Microsoft, которым нужно мощные инструменты для автоматизации задач по управлению серверами и компьютерами на базе Windows. В качестве основы для данного языка была использована платформа.NET, разрабатываемая компанией Microsoft с 2002 года.
Windows PowerShell позволяет автоматизировать массу разнообразных задач. С его помощью можно управлять файлами, службами, процессами, аккаунтами и настройками. Язык PowerShell понимает многие команды из обычной Командной строки Windows (CMD), но он имеет и свой собственный язык, состоящий из собственных команд, которые здесь называются командлетами.
Командлеты (на английском cmdlets) формируются по правилу Глагол-Существительное, например, Get-Help. Ознакомиться с основами Windows PowerShell можно с помощью справки (командлет «Get-Help»). Для получения общей информации просто введите команду «Get-Help», для получения справки о конкретном командлете введите «Get-Help Имя-командлета». Например, если ввести команду «Get-Help Get-Process», то мы получим справку о командлете Get-Process.
Как запустить программу Windows PowerShell
Программу Windows PowerShell можно запустить разными способами. Самый простой вариант, это просто воспользоваться поиском в меню «Пуск». Для этого откройте меню «Пуск», введите поисковый запрос «Windows PowerShell», после чего откройте найденную программу.
Также можно с помощью комбинации клавиш Windows-R и ввести команду «powershell».
В Windows 10 программу PowerShell можно запустить из любой папки. Для этого нужно нажать на кнопку «Файл» в верхнем левом углу Проводника и выбрать «Запустить Windows PowerShell».
Как пользоваться программой Windows PowerShell
Как мы уже сказали, с помощью программы PowerShell можно автоматизировать многие рутинные задачи в операционной системе Windows. Для примера мы продемонстрируем некоторые возможности, которыми обладает данный инструмент, для того чтобы стало понятно, как им пользоваться.
Очистка корзины . Для очистки корзины существует специальный командлет, который называется «Clear-RecycleBin ». Данный командлет пригодится при написании скриптов для обслуживания компьютеров. При выполнении командлета нужно указать диск, на котором нужно очистить корзину. Пример:
Clear-RecycleBin c:
На скриншоте внизу видно, как выполняется данный командлет. После введения команды «Clear-RecycleBin c: » появляется запрос на подтверждение. Для того чтобы продолжить выполнение командлета нужно ввести букву «Y» и нажать Enter.
Если к командлету «Clear-RecycleBin c: » добавить «-Force », то очистка корзины выполнится без запроса на подтверждение. Скриншот внизу.
Архивация файлов . Для архивации и распаковки файлов предусмотрены командлеты «Compress-Archive » и «Expand-Archive «. Например, для того чтобы архивировать папку «C:\test\» в архив «C:\archive\test2.zip» нужно выполнить следующий командлет:
Compress-Archive -LiteralPath C:\test\ -DestinationPath C:\archive\test2.zip
В результате выполнения показанной выше команды, в папке «C:\archive\» появится файл «test2.zip», в котором будет заархивировано содержимое папки «C:\test\».
Список командлетов для Windows PowerShell
Для Windows PowerShell существует огромное количество разных командлетов и описать их все в одной статье не получится. Поэтому предлагаем ознакомиться с самыми востребованными из них:
- Get-Help – получение справки;
- Update-Help – обновление справки;
- Get-Command – поиск командлетов;
- Get-Alias – поиск псевдонимов для командлетов;
- Get-PSDrive – просмотр подключенных дисков;
- Get-Member – просмотр свойств и методов, которые есть у объекта;
- Get-WindowsFeature – просмотр сведений о доступных ролях и компонентах сервера;
- Install-WindowsFeature (аналог Add-WindowsFeature) — устанавливает роли или компоненты на нужный сервер;
- Uninstall-WindowsFeature (аналог Remove-WindowsFeature) – удаляет роли или компонента сервера;
- Get-History – просмотр истории команд, которые вводились в этой сессии;
- Get-Variable – просмотр списка переменных и их значений;
- New-Variable – создание новой переменной;
- Set-Variable – установка значения переменной;
- Clear-Variable – удаление значения переменной;
- Remove-Variable – удаление переменной и ее значения;
- Format-List – просмотр результата команды в виде списка свойств, где в каждой строке отдельное свойство;
- Format-Table — просмотр результата команды в формате таблицы;
- Format-Wide — просмотр результата команды в виде широкой таблицы, в которой показывается только одно свойство для каждого объекта;
- Format-Custom – просмотр результата команды с использованием пользовательского представления;
- Export-Csv – экспорт данных в формат CSV;
- Import-Csv – импорт данных из CSV файла;
- Export-Clixml — экспорт данных в формат XML;
Полный список командлетов для Windows PowerShell вы можете получить, выполнив командлет «Get-Command -CommandType cmdlet».
Всем привет! Сегодня небольшая заметка на тему, как открыть powershell от имени администратора
. Напомню PowerShell, это мощный язык программирования и администрирования от компании Microsoft, каждый год он обрастает, все большим количество командлетов и функциональностей. По сути, это замена командной строке Windows . Ниже рассмотрим методы позволяющие его открыть и настроить.
.
Методы открытия оснастки PowerShell
Powershell очень хорошо развивается и с выходом Windows 10 получил уже 4 версию, но у нас тема другая. Так как открыть powershell? Все просто если в Windows XP, то никак. так он доставляется отдельно, во всех последующих релизах он идет как встроенный компонент. Самый универсальный способ открытия powershell это нажать
Win+R и ввести powershell
Нажав enter у вас запуститься консоль PowerShell, проблема только в том, что откроется она не от имени администратор. И в итоге многое команды выполнить не удастся, ниже смотрим как это сделать от имени админа.
Как открыть windows powershell от имени администратора в Windows 8.1 и Windows 7
Открыть windows powershell можно через пуск. В Windows 8.1, Windows 2012 R2 переходите в пункт Служебные — Windows и правым кликом выбираете запустить от имени администратора.
В Windows 7 и Windows 2008 R2 это выглядит вот так Пуск > Стандартные > Windows PowerShell
Так же можно создать ярлык в пункте задачи и щелкнуть по нему правым кликом и выбрать соответствующий пункт
было бы удобно, чтобы PowerShell всегда открывался от имени администратора, давайте это реализуем. Делается это во всех версиях Windows одинаково. Открываем панель управления
Щелкаем по нему правым кликом мыши и выбираем пункт свойства. Сразу можете посмотреть путь до файла, где он лежит в системе.
Нажимаем кнопку «Дополнительно». У вас откроется дополнительные свойства. где вам нужно выставить галку запуск от имени администратора.
Все очень просто. Уверен, что у вас теперь не встанет вопроса как вам открыть windows powershell. Еще полезным бывает поменять шрифт в окне powershell.
Как открыть PowerShell через контекстное меню кнопки «Пуск» в Windows 10
Компания Microsoft, все больше делает акцент с командной строки в сторону своего сильного языка (PowerShell), и это логично, так как его возможности по управлению операционными системами семейства Windows, почти безграничны, а то и больше, чем в графическом интерфейсе. Начиная с версии Windows 10 1709, в контекстном меню, PowerShell, заменил всем привычный cmd. Щелкаете правым кликом по кнопке пуск в Windows 10 и из контекстного меню, выбираем соответствующий пункт:
- Windows PowerShell
- Windows PowerShell (администратор) — это как раз и есть режим с максимальными правами в Windows 10.
Запуск Windows PowerShell с помощью поиска в Windows 10
В Windows 10 и более старых версиях, найти оболочку PowerShell, можно с помощью обычного поиска, для этого есть специальная секция. Нажмите рядом с кнопкой «Пуск», значок в виде лупы. В открывшейся форме поиска, введите слово PowerShell. У вас будет произведен поиск всех вариантов, среди которых вы и обнаружите оболочку. Если щелкнуть по ней правой кнопкой мыши, то можно открыть ее от имени администратора.
Запуск Windows PowerShell с помощью меню Пуск в Windows 10
Для того, чтобы открыть оболочку PowerShell из меню Пуск, откройте его и найдите пункт Windows PowerShell, он будет в виде папки, откройте его и запустите соответствующую версию.
Если кликнуть правым кликом, то вы сможете запускать оболочку повершела от имени и с правами администратора.
Дополнительные и универсальные методы запуска оболочки
Существуют еще совсем специфические методы открытия оболочки с мощным языком от Microsoft. Самый топорный, это просто найти исполняемый файл и запустить его прямо из расположения в системе. Переходим в вашей Windows 10 по пути:
C:\Users\имя пользователя\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Windows PowerShell
В итоге у вас откроется папка с ярлыками, которые присутствуют в меню «Пуск», можете их запускать.
Еще можно запустить оригинальный, исполняемый файл, который лежит по пути:
C:\Windows\System32\WindowsPowerShell\v1.0
И кликнув по нему правым кликом, вы можете его загружать от имени администратора, с максимальными правами.
Так же вы можете запустить виндоус PowerShell и из окна командной строки, для этого просто введите в нем волшебное слово и нажмите Enter.
Ну и еще напомню метод, запуска новой задачи из оснастки «Диспетчер задач». Откройте «Диспетчер задач», выберите пункт меню «Файл — Запустить новую задачу»
В появившемся окне введите PowerShell.
Ну и последний известный мне метод, это запуск PowerShell, через проводник Windows 10, для этого откройте проводник, выберите пункт меню «Файл — запустить Windows PowerShell», тут будут оба режима.
Что такое PowerShell ISE
Наверняка вы обратили внимание, что везде присутствует ярлык PowerShell ISE, и вы хотели бы знать, что это такое. Если в двух словах, то это особая оболочка, в которой вы можете писать сценарии и скрипты на языке PowerShell, используя все то разнообразие командлетов, что предлагает вам компания Microsoft.
powershell шрифт меняется очень просто перейдите в свойствах на вкладку Шрифт, где вы можете задать размер от 5 до 72.
так же в свойства можно попасть из самого окна утилиты, щелкните по значку в левом верхнем углу и выберите свойства
Тут настройки шрифта немного другие, вместе с их изменением, меняется и размер консоли.
На вкладке Цвета, можете задать цвет шрифта в powershell да и самого окна. Сделав его например черным, как командная строка.
Так же советую, если вы активный консольщик выставить размер буфера не в 50 команд, а хотя бы в 100.
Спасибо за внимание. Вот такие вот методы, открытия консоли Power Shell в Windows. Материал сайта
Как писать и как запускать скрипты PowerShell
1. Написание скрипта
Скрипт PowerShell (не важно какой версии) — это текстовый файл с расширением *.ps1.
Вот пример простого Power Shell срипта (файл systemInfo.ps1):
# Retrieve WMI object for the operating system
Get-WmiObject Win32_OperatingSystem
Этот файл можно создавать и редактировать, например, в FAR Manager.
Обратите внимание, что FAR Manager хоть и может работать в консоли Power Shell, но выполняет из-под себя скрипты в окружении обычной Windows-консоли cmd. То есть, FAR Manager можно использовать только для создания и редактирования PowerShell скриптов, но не для запуска. Но прежде чем разочаровываться, прочитайте пункт 3.
2. Запуск срипта
Скрипт нужно выполнять из консоли Power Shell, а не из обычной консоли Windows. В консоли Power Shell необходимо перейти в каталог, где лежит скрипт (командами cd), и затем запустить сам скрипт, обязательно прописав перед ним символы «.\». Например, имеем путь к файлу скрипта d:\work\systemInfo.ps1. Тогда команды запуска будут выглядеть так:
d:
cd \
cd work
.\systemInfo.ps1
или так (просто указывается полный путь к скрипту):
d:\work\systemInfo.ps1
Скорее всего, при запуске скрипта появится следующая ошибка:
Не удается загрузить файл D:\work\systemInfo.ps1, так как выполнение скриптов запрещено для данной системы. Введите «get-help about_signing» для получения дополнительных сведений.
строка:1 знак: 18
+ CategoryInfo : NotSpecified: (:) [], PSSecurityException
+ FullyQualifiedErrorId : RuntimeException
Ошибка появляется из-за того, что по-умолчанию в Power Shell включена максимальная политика безопасности, которая позволяет выполнять команды PowerShell в командной строке, но не позволяет в той же командной строке выполнить скрипт с командами PowerShell.
Чтобы резрешить выполнение PowerShell скриптов, нужно создать *.bat файл, например enableScript.bat со следующим содержимым:
powershell -Command Set-ExecutionPolicy RemoteSigned
Этот *.bat файл можно выполнить в любой консоли: хоть в PowerShell, хоть в обычной cmd. После выполнения этого файла, PowerShell-скрипты станут запускаться в консоли PowerShell.
3. Запуск PowerShell-скрипта из обычной Windows-консоли cmd
Скрипт PowerShell можно выполнить и из обычной консоли Windows. Для этого можно воспользоваться командой:
Powershell -File ./systemInfo.ps1
Таким образом можно выполнять скрипты прямо из FAR Manager, и они будут работать.
Но тут есть небольшая тонкость. Параметр -File срабатывает только на локальных путях, даже если путь указан относительный «./». То есть, если *.ps1 — файл лежит на локальном диске C: или D:, то такой вызов будет работать. Но если попробовать выполнить скрипт, расположенный на доменном ресурсе, то скрипт не будет найден. Возможно, это исправят в следующих версиях PowerShell.
Запуск сценария powershell. Как писать и как запускать скрипты PowerShell
Большинство существующих ответов объясняют How, но очень немногие объясняют почему. И прежде чем вы начнете выполнять код от незнакомцев в Интернете, особенно код, который отключает меры безопасности, вы должны точно понимать, что вы делаете. Так вот немного подробнее об этой проблеме.
Политики выполнения Windows PowerShell позволяют определить условия, при которых Windows PowerShell загружает файлы конфигурации и запускает сценарии.
Преимущества, которые перечислены Основы PowerShell — политика выполнения и подписание кода :
- Контроль выполнения . Управление уровнем доверия для выполнения скриптов.
- Command Highjack . Предотвращение ввода команд на моем пути.
- Идентификация . Является ли script создан и подписан разработчиком, которому я доверяю, и/или подписан с сертификатом из центра сертификации, которому я доверяю.
- Целостность . Сценарии не могут быть изменены вредоносными программами или вредоносными пользователями.
Чтобы проверить текущую политику выполнения, вы можете запустить Get-ExecutionPolicy . Но вы, вероятно, здесь, потому что хотите изменить его.
Для этого вы запустите командлет Set-ExecutionPolicy .
При обновлении политики выполнения вы должны принять два важных решения.
Тип политики выполнения:
- Restricted † — No script в системе может быть запущен локальный, удаленный или загруженный файл.
- AllSigned . Все запущенные script требуют цифровой подписи.
- RemoteSigned — все удаленные сценарии (UNC) или загружаемые должны быть подписаны.
- Unrestricted — не требуется подпись для любого типа script.
Сфера применения нового изменения
- LocalMachine † — Политика выполнения затрагивает всех пользователей компьютера.
- CurrentUser . Политика выполнения влияет только на текущего пользователя.
- Process . Политика выполнения влияет только на текущий процесс Windows PowerShell.
† = Значение по умолчанию
Например: если вы хотите изменить политику на RemoteSigned только для CurrentUser, вы должны выполнить следующую команду:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
Примечание . Чтобы изменить политику выполнения, вы должны запустить PowerShell As Adminstrator . Если вы находитесь в обычном режиме и пытаетесь изменить политику выполнения, вы получите следующую ошибку:
Доступ к разделу реестра «HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell» отклоняется. Чтобы изменить политику выполнения для области по умолчанию (LocalMachine), запустите Windows PowerShell с параметром «Запуск от имени администратора».
Если вы хотите затянуть внутренние ограничения на свои собственные сценарии, которые не были загружены из Интернета (или, по крайней мере, не содержат метаданные UNC), вы можете заставить политику запускать подписанные сценарии. Чтобы подписать свои собственные сценарии, вы можете следовать инструкциям статьи Скотта Гензельмана Подписывать скрипты PowerShell .
Примечание . Большинство людей могут получить эту ошибку, когда они открывают Powershell, потому что первое, что пытается сделать PS при запуске, — это выполнить свой профиль пользователя script, который настраивает вашу среду, но вы нравится.
Файл обычно находится в папке
%UserProfile%\My Documents\WindowsPowerShell\Microsoft.PowerShellISE_profile.ps1
Вы можете найти точное местоположение, запустив переменную powershell
$profile
Если в профиле нет ничего, о чем вы заботитесь, и не хотите беспокоиться о своих настройках безопасности, вы можете просто удалить его, и powershell не найдет ничего, что он не сможет выполнить.
Запуск PowerShell скриптов по расписанию
В задачи практически любого системного администратора входит написание различных скриптов и их запуск. Запланировать запуск скрипта по расписанию с помощью Task Sheduler — задача несложная, но при использовании PowerShell есть некоторые нюансы, о которых я расскажу в этой статье.
Итак, предположим, у меня есть скрипт start.ps1, который мне необходимо запускать ежедневно в течении 10 дней. Есть два способа решить эту задачу.
Способ 1
Для запуска скрипта воспользуемся оснасткой Task Scheduler, он же планировщик заданий. Найти его можно в разделе Administrative Tools, либо нажав Win+R и введя команду taskschd.msc . Открываем планировщик и в разделе Actions выбираем пункт Create Task.
На вкладке General указываем имя и описание задания, а также (по необходимости) пользователя, от имени которого задание будет запускаться. Для того, чтобы задание выполнялось вне зависимости от того, залогинен ли пользователь в системе, выбираем опцию «Run whether user is logged on or not». Если для выполнения задания требуется повышение привилегий, то отмечаем опцию «Run with highest privileges».
Далее идем на вкладку Triggers и создаем новый триггер, в котором будет храниться расписание запуска нашего задания. В поле Start указываем дату и время запуска, а в поле Expire — дату и время завершения задания. Указываем выполнять задание ежедневно (Daily) и задаем период повтора (Recur every) 1 день.
Примечание. Если вы хотите запускать задание чаще, чем раз в день, то надо выбрать одноразовое выполнение (One time), а в разделе Advanced settings отметить пункт Repeat task every и указать время повторения, минимум 5 минут, максимум 1 час. Если этого недостаточно, то дополнительно в поле Delay task for up to можно указать временную задержку.
И основное. Переходим на вкладку Action и указываем действие для запланированного задания. Напомню, что в целях безопасности PowerShell скрипты могут выполняться только интерактивно, то есть сначала надо запустить оболочку PowerShell и уже в ней указать путь к скрипту. Поэтому в поле «Action» указываем запуск powershell.exe, а в поле «Add Arguments» параметр -File и путь к нашему скрипту, вот так:
File ″C:\Scripts\start.ps1″
Также в поле аргументы можно указать:
Command
— выполняет указанные команды и любые другие параметры. Этот параметр тоже можно использовать для запуска скрипта, например: -Command ″& {C:\Scripts\start.ps1}″
. Кроме того, с его помощью можно передавать в скрипт параметры: -Command ″& {C:\Scripts\start.ps1 -a 1 -b 3}″
;
-ExecutionPolicy
— задает политику выполнения скриптов для текущего сеанса, может принимать значения Unrestricted, RemoteSigned, AllSigned и Restricted. Заданная политика будет действовать только в текущем сеансе
и имеет приоритет над любыми ранее созданными политиками;
-NonInteractive
— отключить вывод интерактивных запросов к пользователю;
-WindowStyle Hidden
— запуск окна PowerShell в скрытом режиме, незаметно для пользователя;
-NoProfile
— предотвращает загрузку профиля, что может несколько ускорить выполнение скрипта;
-NoExit
— оставить оболочку открытой после отработки скрипта. Это может понадобиться при проверке и отладке скрипта.
Заполнив необходимые поля жмем ОК и сохраняем задание. Теперь скрипт будет запускаться по расписанию ежедневно в заданное время в течении 10 дней.
Способ 2
В PowerShell 3.0 появился новый функционал Sheduled Job, дающий возможность создавать запланированные задания прямо из консоли, не пользуясь оснасткой планировщика. Воспользуемся им для планового запуска нашего скрипта.
Сначала создаем расписание запуска (ежедневно в полпятого вечера, в течении 10 дней):
$t = New-JobTrigger -Daily -At 4:30PM -DaysInterval 10
Затем сохраняем в переменной учетные данные:
$cred = Get-Credential contoso\administrator
В качестве опции указываем запуск задания с повышенными привилегиями:
$o = New-ScheduledJobOption -RunElevated
И регистрируем задание с именем Start:
Register-ScheduledJob -Name Start -FilePath C:\Scripts\start.ps1 -Trigger $t -Credential $cred -ScheduledJobOption $o
Чтобы убедится в том, что задание создано, можно открыть планировщик и найти наше задание в разделе Microsoft\Windows\PowerShell\SheduledJobs.
Примечание. Для каждого запланированного задания PowerShell в директории %systemdrive%\Users\%username%\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs создается одноименная папка. В этой папке находится само задание в XML-файле и папка Output, в которой, в подпапках по времени выполнения, хранится история выполнения задания — результат выполнения (файлs Result.xml) и статус задания (Status.xml). Эти файлы могут пригодиться для отладки и диагностики в том случае, если задание не отрабатывает должным образом.
Execution Policy
В заключение напомню об одном немаловажном моменте, а именно о политике выполнения скриптов Execution Policy. Посмотреть текущее значение политики можно командой Get-ExecutionPolicy . Политика выполнения может иметь значения:
Restricted — блокируется выполнение любых скриптов. Значение по умолчанию;
AllSigned — разрешено выполнение скриптов, имеющих цифровую подпись;
RemoteSigned — скрипты, подготовленные на локальном компьютере, можно запускать без ограничений, скрипты, загруженные из Интернета — только при наличии цифровой подписи;
Unrestricted — разрешено выполнение любых скриптов. При запуске неподписанного скрипта, который был загружен из Интернета, программа может потребовать подтверждение;
Bypass — ничего не блокируется, никакие предупреждения и запросы не появляются.
Обычно для безпроблемного выполнения скриптов достаточно задать значение RemoteSigned. Изменить текущее значение можно командой Set-ExecutionPolicy , например:
Set-ExecutionPolicy RemoteSigned -force
Примечание. Если указанная в команде политика выполнения противоречит групповой политике, то параметр запишется в реестр, но действовать не будет.
Всем привет сегодня хочу рассказать как запустить скрипт PowerShell в Windows. Представьте ситуацию вы написали скрипт который сильно упрощает вам вывод информации по Active Directory , вы открываете оснастку powershell прописываете путь к своему скрипту нажимаете enter и получаете ошибку.
Не удается загрузить файл , так как выполнение скриптов запрещено для данной системы. Введите «get-help about_signing» для получения дополнительных сведений.
Смотрим как ее решить.
PowerShell обладает рядом режимов исполнения, которые определяют, какой тип кода разрешается выполнять. Все это управляется ключом реестра, живущим в HKLM. Существует 4 различных режима исполнения:
Ограниченный (Restricted): Политика исполнения по умолчанию, не допускает работу скриптов и разрешает работу лишь интерактивных команд.
Все подписанные (All Signed): Допускает работу всех скриптов. Правда, все скрипты и файлы конфигурации должны быть подписаны издателем, которому вы доверяете; данный режим подвергает вас риску работы подписанных (но вредоносных) скриптов, после получения подтверждения доверия издателю.
Удаленные подписанные (Remote Signed): Локальные скрипты работают без подписи. Все скачанные скрипты должны иметь цифровую подпись.
Неограниченный (Unrestricted): Все скрипты и файлы конфигурации, полученные из коммуникационных приложений, вроде Microsoft Outlook, Internet Explorer, Outlook Express и Windows Messenger работают после подтверждения, что вы понимаете, что файл исходит из Интернета; никакие цифровые подписи не требуются; данный режим подвергает вас риску работу неподписанных, вредоносных скриптов.
По умолчанию для PowerShell используется режим «Ограниченный». В этом режиме, PowerShell работает лишь как интерактивная оболочка. Он не допускает работу скриптов, и загружает лишь те файлы конфигурации, которые подписаны издателем, которому вы доверяете.
Разрешить выполнение скриптов powershell
Чтобы запускать созданные собою скрипты, необходимо разрешить выполнение ненадежных скриптов с помощью команды Set-ExecutionPolicy remotesigned и подтверждением (Внимание!!! для выполнения этой команды необходимо запустить PowerShell с правами администратора). После этого можно вновь запустить выполнения скрипта.
На вопрос жмем Y, для разрешения выполнения скриптов. После этих манипуляций вы сможете запустить ваш скрипт.
Запуск PowerShell скрипта
Данная заметка посвящена описанию настройки необходимых параметров для запуска PowerShell скриптов. Чаще при первом запуске .ps1 скриптов вы видите следующие ошибки:
Файл невозможно загрузить. Файл не имеет цифровой подписи. Скрипт не будет выполнен в системе. Чтобы получить дополнительные сведения, введите команду «Get-Help about_signing».
The file cannot be loaded. The file is not digitally signed. The script will not execute on the system. Please see «Get-Help about_Signing» for more details.
Запустить программу от ненадежного издателя? Файл опубликован CN=Этот издатель не помечен как надежный в данной системе. Выполнять следует только скрипты надежных издателей.
[V] Никогда не выполнять [D] Не выполнять [R] Выполнить один раз [A] Всегда выполнять [?] Справка (по умолчанию «D»):
Do you want to run software from this untrusted publisher? The file is published by CN=This publisher is not trusted on your system. Only run scripts from trusted publishers.
[V] Never run [D] Do not run [R] Run once [A] Always run [?] Help (default is «D»):
Данные ошибки и сообщения вызваны настройками политики выполнения Windows PowerShell . При этом не стоит думать, что эти параметры действительно повышают безопасность ОС, ведь код все равно отработает, если его скопировать в к консоль PowerShell. Таким образом, настройки безопасности можно отключить — они защищают только от случайных действий. Поэтому обычно данную проблему решают командой :
Set-ExecutionPolicy Unrestricted LocalMachine
Конечно, такой подход не применим в корпоративной среде, поэтом разберемся более подробно с данной ситуацией. Посмотреть текущие настройки политики во всех областях применения можно выполнив командлет Get-Executionpolicy с параметром list.
get-executionpolicy -list
Scope | ExecutionPolicy |
—— | ————— |
MachinePolicy | Unrestricted |
UserPolicy | Undefined |
Process | RemoteSigned |
CurrentUser | AllSigned |
LocalMachine | Restricted |
Данная политика может принимать 6 значений:
Restricted
(Политика выполняется по умолчанию. Например если во всех областях применения стоит значение Undefined)
— Допускает отдельные команды, но скрипты выполнять нельзя.
— Препятствует выполнению всех файлов скриптов, включая файлы форматирования и конфигурации (PS1XML), файлы скриптов модулей (PSM1) и профили Windows PowerShell (PS1).
AllSigned
— Требует, чтобы все скрипты и файлы конфигурации были подписаны надежным издателем, в том числе скрипты, подготовленные на локальном компьютере.
— Перед выполнением скриптов издателей, для которых еще не определено, являются ли они надежными, выводятся предупреждения.
— Имеется риск выполнения неподписанных скриптов из источников, отличных от Интернета, а также подписанных, но вредоносных скриптов.
RemoteSigned
— Выполнение скриптов разрешено.
— Требует наличия цифровой подписи надежного издателя у скриптов и файлов конфигурации, загружаемых из Интернета (включая электронную почту и программы мгновенного обмена сообщениями).
— Не требует наличия цифровых подписей у скриптов, выполняемых и написанных на локальном компьютере (не загруженных из Интернета).
— Имеется риск выполнения подписанных, но вредоносных скриптов.
Unrestricted
— Могут выполняться неподписанные скрипты. (Имеется риск выполнения вредоносных скриптов.)
— Предупреждает пользователя перед выполнением скриптов и файлов конфигурации, загруженных из Интернета.
Bypass
— Ничего не блокируется, и никакие предупреждения и запросы не появляются.
— Эта политика выполнения предназначена для конфигураций, в которых скрипт Windows PowerShell встроен в более крупное приложение, или для конфигураций, в которых Windows PowerShell является платформой для программы, у которой имеется собственная модель обеспечения безопасности.
Undefined
— В текущей области не задана политика выполнения.
— Если политика выполнения во всех областях имеет значение Undefined, действует политика выполнения Restricted, которая является политикой выполнения по умолчанию.
Существует пять областей применения данной политики и параметров:
MachinePolicy
и UserPolicy
задаются политиками AD или локальными политиками данного компьютера.
Process
— область применения текущая ссесия. В справке говорится, что её значение хранится в переменной $PSExecutionPolicyPreference однако получить/изменить значение данной политики через переменную не удалось. Измения сделанные на эту область применения ни как не повлияют на другие сессии.
CurrentUser
— область применения текущей пользователь. Её значение хранится в разделе реестра HKEY_CURRENT_USER («HKEY_CURRENT_USER\Software\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell\ExecutionPolicy»).
LocalMachine
— область применения на всех пользователей текущего компьютера. Она хранится в разделе реестра HKEY_LOCAL_MACHINE(«HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\ScriptedDiagnostics\ExecutionPolicy»).
У команды get-executionpolicy есть параметр -Scope. С помощью данного параметра можно выбрать область применения для которого отобразиться значение политики.
Get-ExecutionPolicy -scope Process
Результат выполнения командлета: RemoteSigned
При этом Области применения имеют приоритет высшим обладает MachinePolicy, потом UserPolicy, Process, CurrentUser и самый низкий приоритет у LocalMachine.
Поэтому в примере:
Scope | ExecutionPolicy |
—— | ————— |
MachinePolicy | Unrestricted |
UserPolicy | Undefined |
Process | RemoteSigned |
CurrentUser | AllSigned |
LocalMachine | Restricted |
В текущей ссесии результирующая политика будет иметь значение Unrestricted.
Для того что бы узнать значение политики выполнения скриптов для данной сесии, надо применить командлет Get-ExecutionPolicy без параметров.
Вывод: Unrestricted
Изменение политики выполнения скриптов PowerShell:
Что бы изменять значение политик выполнения скриптов PowerShell, существует коммандлет Set-ExecutionPolicy.
Данный командлет имеет следующие параметры:
-ExecutionPolicy
Указывает значение политики. Может иметь следующие значения: Restricted, AllSigned, RemoteSigned, Unrestricted, Bypass, Undefined. Данный параметр обязательный для указания. Если не указан, во время выполнения комадлет попросит указать значения.
Вывод:
Укажите значения для следующих параметров:
ExecutionPolicy:
-Scope
Определяет область применения данной политики. Может иметь следующие значения: LocalMachine ,Process, CurrentUser. Если параметр области применения не указан, по умолчанию указывается значение LocalMachine.
Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope Process
Set-ExecutionPolicy Unrestricted Process
-Force
С этим параметром командлет не будет требовать подтверждения со стороны пользователя. Например:
Set-ExecutionPolicy Unrestricted Process -Force
Командлет ничего не выведет на экран и применит значение политики.
-Confirm
Если же вам наоборот мало одного подтверждения. Можно указать параметр Confirm и у вас будет ещё один, дополнительный, запрос на подтверждение ваших действий:
Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope Process -confirm
Результат выполнения:
Подтверждение
Вы действительно хотите выполнить это действие?
Выполнение операции «Set-ExecutionPolicy» над целевым объектом «Unrestricted».
[Y] Да — Y [A] Да для всех — A [N] Нет — N [L] Нет для всех — L [S] Приостановить — S [?] Справка (значением по умолчанию является «Y»):
Изменение политики выполнения
Политика выполнения защищает компьютер от ненадежных сценариев. Изменение политики выполнения может поставить под угрозу безопасность системы, как описано в разделе справки, вызываемом командой about_Execution_Policies. Вы хотите изменить политику выполнения?
[Y] Да — Y [N] Нет — N [S] Приостановить — S [?] Справка (значением по умолчанию является «Y»):
.
exe
-executionpolicy
Unrestricted
Get-ExecutionPolicy -list
Результат выполнения:
Scope | ExecutionPolicy |
—— | ————— |
MachinePolicy | Unrestricted |
UserPolicy | Undefined |
Process | RemoteSigned |
CurrentUser | AllSigned |
LocalMachine | Restricted |
Изменение параметров политики запуска скриптов, с помощью групповых политик.
В груповой политике, параметр контролирующая запуск скриптов находиться по пути:
для MachinePolicy :
Computer Configuration/Policies/Administrative Templates/Windows Components/Windows PowerShell
Конфигурация компьютера/Административные шаблоны/Компоненты Windows/Windows PowerShell
для UserPolicy
:
User Configuration/Policies/Administrative Templates/Windows Components/Windows PowerShell
Конфигурация пользователя/Административные шаблоны/Компоненты Windows/Windows PowerShell
Параметр Execution Policy может принимать 3 значения.
Программа PowerShell — это альтернативная командная строка с обширной функциональностью. Многие владельцы компьютеров, которые неплохо ориентируются в системных процессах, интересуются возможностями её использования на Windows 10 и предыдущих версиях этого обеспечения, чтобы менять конкретные процессы и настройки ПК под себя.
В использовании программы PowerShell нет ничего сложного. Просто следуйте всем инструкциям из этой статьи и у вас все получится
Если вы не являетесь знатоком в подобной тематике, только начинаете изучение командных строк и действий, доступных к выполнению в них, вам будет полезно узнать ответы на главные вопросы по пользованию таким приложением. Например, как запустить Windows PowerShell ISE Windows 10 и писать, работать со скриптами.
Как открыть PowerShell?
Это можно сделать несколькими следующими способами:
- — вы найдёте приложение в общем списке компонентов под буквой W.
- При помощи поиска в Панели задач — откройте её, и введите слово PowerShell для поиска.
- Используя меню «Выполнить» — запустите его через комбинацию Win+R и напишите название утилиты, после чего она будет найдена в системе.
- В коммандере задайте действие PowerShell — но, вы должны знать, что будете работать с приложением через уже запущенную строку, а не в отдельном окне.
- В параметрах Windows выберите «Свойства панели задач» и меню «Пуск». Во вкладке «Навигация» поставьте флажок на строке «Заменить командную строку оболочкой PowerShell…». Теперь вы сможете включать утилиту комбинацией Win+X.
Как писать и запускать скрипты?
Как создать скрипт PowerShell и запустить его? Это можно попросту сделать в блокноте — используя его, укажите в новом документе необходимые вам команды. После сохраните его, но поменяйте формат на.ps1 — именно такое расширение имеют файлы этой системной утилиты.
Писать скрипты в самом приложении можно так:
- Запустите его.
- Нажмите на пункт «Создать».
- Или кликните на «Файл», и в появившемся списке выберите «Создать».
- Напишите все команды, которые нужно выполнить, сохраните файл.
Скрипты ещё можно писать и редактировать в FAR Manager, но их нельзя использовать непосредственно в таком приложении, ведь оно отображает файлы этого типа через стандартную строку cmd. Однако прочие действия выполняются таким же образом, как и в «родной» утилите.
Запустить скрипт вы сможете таким образом:
- Зайдите в PowerShell от имени администратора.
- При помощи команд cd укажите месторасположение требуемого файла. Например, e: cd\ cd work .\ имя_файла. Ps1, или e: \work\ имя_файла.ps1
- В этом случае e: — имя жёсткого диска, где находится файл.
- Жмите Enter.
Программа обязательно покажет вам сообщение с текстом «Не удаётся загрузить файл ___ .Ps1, так как выполнение скриптов запрещено для этой системы…», когда вы будете первый раз запускать команду. Дело в том, что Windows оснащён защитой от вмешательства благодаря разработчикам, поэтому никто из пользователей по умолчанию не имеет доступа на выполнение таких действий. Но, это ограничение можно очень просто обойти.
Как? В тексте, возникающем вместе с ошибкой, будет рекомендация ввести команду get-help about_signing, чтобы получить больше информации. Вы можете выполнить эти указания, или использовать комбинацию Set-ExecutionPolicy remotesigned — после её ввода потребуется подтверждение, и ограничение будет снято.
Другие вопросы по пользованию
У многих возникает вопрос, как узнать версию PowerShell? Для этого выполните следующее:
- Введите $PSVersionTable.
- Если это ни к чему не привело, значит, у вас версия 1.0 — для неё есть команда $host.version.
- В ином случае появится подробная информация о том, какая версия приложения установлена на ПК.
Запуск скрипта powershell из bat файла. Windows PowerShell: что это за программа
Есть несколько различных способов запуска скрипта, ниже приведены основные:
- Запустить оболочку PowerShell и в ней запустить скрипт (ввести путь до файла и имя файла, например, так: C:\Scripts\test.ps1, или перейти в папку скрипта командой cd C:\Scripts и запустить его командой.\test.ps1)Оболочку можно найти и запустить множеством способов. Один из способов — через меню «Пуск». Для Windows 7 — нужно зайти во «Все программы» — «Стандартные» — «Windows PowerShell» и запустить оболочку «Windows PowerShell». Для Windows 10 — нужно найти группу на букву «W» и в ней вы найдете «Windows PowerShell».
- Запустить «Интегрированную среду сценариев Windows PowerShell ISE» — это программа — среда разработки, позволяющая редактировать и отлаживать скрипты PowerShell, которая так же есть по-умолчанию вместе с самим PowerShell. Запустив ее, нужно просто нажать кнопку «Открыть» или зайти в меню Файл — Открыть и выбрать нужный скрипт, затем нажать F5 или кнопку «Выполнить скрипт».Найти Windows PowerShell ISE можно там же, где и оболочку PowerShell — в меню «Пуск».
- Запустить стандартную коммандную строку
и в ней написать:
powershell -file (пример: powershell -file myscript.ps1)
Если вы раньше не запускали скрипты PowerShell, то скорее всего, вы получите сообщение: Не удается загрузить файл , так как выполнение скриптов запрещено для данной системы. Введите «get-help about_signing» для получения дополнительных сведений. Связано это с тем, что из соображений безопасности и недопущения случайного выполнения вредоносного кода, все скрипты должны быть подписаны цифровой подписью.
Как разрешить выполнение неподписанного скрипта PowerShell?
1. В оболочке PowerShell , перед тем как запускать скрипт, выполнить команду, разрешающую выполнение неподписанных скриптов для текущего сеанса оболочки:
Set-ExecutionPolicy RemoteSigned -Scope Process
2. При запуске из стандартной коммандной строки использовать параметр -executionpolicy, т.е. запускать скрипт так:
Оба способа устанавливают политику только для текущего сеанса, при этом, политика безопасности выполнения скриптов 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 «еще один текстовый параметр»
В самом скрипте вы можете получить эти параметры так:
Param ($var1, $var2, $var3) echo $var1, $var2, $var3
В интегрированной среде PowerShell ISE запустить скрипт с параметрами можно аналогично, используя область команд.
Как запустить скрипт PowerShell с помощью ярлыка?
Осуществить такую задачу можно двумя способами:
- Создать bat/cmd файл, в котором прописать команду для запуска скрипта (с параметрами вы ознакомились выше)
- Создать ярлык на PowerShell, который можно найти в папке c:\Windows\System32\WindowsPowerShell\v\ и в свойствах ярлыка в поле «Объект» дописать необходимые параметры.
Таким образом, например, чтобы запустить скрипт powershell при входе пользователя, можно просто создать ярлык, как описано во 2-м пункте и поместить его в автозагрузку. Так же, создание ярлыка одним из способов выше позволит легко запустить скрипт от имени администратора или от имени любого другого пользователя как обычную программу.
Скриптовый язык PowerShell — довольно мощный инструмент для решения различных задач, но его можно использовать не только для хороших вещей, но и во вред, поэтому, пользуйтесь им с умом;)
Программа PowerShell — это альтернативная командная строка с обширной функциональностью. Многие владельцы компьютеров, которые неплохо ориентируются в системных процессах, интересуются возможностями её использования на Windows 10 и предыдущих версиях этого обеспечения, чтобы менять конкретные процессы и настройки ПК под себя.
В использовании программы PowerShell нет ничего сложного. Просто следуйте всем инструкциям из этой статьи и у вас все получится
Если вы не являетесь знатоком в подобной тематике, только начинаете изучение командных строк и действий, доступных к выполнению в них, вам будет полезно узнать ответы на главные вопросы по пользованию таким приложением. Например, как запустить Windows PowerShell ISE Windows 10 и писать, работать со скриптами.
Как открыть PowerShell?
Это можно сделать несколькими следующими способами:
- — вы найдёте приложение в общем списке компонентов под буквой W.
- При помощи поиска в Панели задач — откройте её, и введите слово PowerShell для поиска.
- Используя меню «Выполнить» — запустите его через комбинацию Win+R и напишите название утилиты, после чего она будет найдена в системе.
- В коммандере задайте действие PowerShell — но, вы должны знать, что будете работать с приложением через уже запущенную строку, а не в отдельном окне.
- В параметрах Windows выберите «Свойства панели задач» и меню «Пуск». Во вкладке «Навигация» поставьте флажок на строке «Заменить командную строку оболочкой PowerShell…». Теперь вы сможете включать утилиту комбинацией Win+X.
Как писать и запускать скрипты?
Как создать скрипт PowerShell и запустить его? Это можно попросту сделать в блокноте — используя его, укажите в новом документе необходимые вам команды. После сохраните его, но поменяйте формат на.ps1 — именно такое расширение имеют файлы этой системной утилиты.
Писать скрипты в самом приложении можно так:
- Запустите его.
- Нажмите на пункт «Создать».
- Или кликните на «Файл», и в появившемся списке выберите «Создать».
- Напишите все команды, которые нужно выполнить, сохраните файл.
Скрипты ещё можно писать и редактировать в FAR Manager, но их нельзя использовать непосредственно в таком приложении, ведь оно отображает файлы этого типа через стандартную строку cmd. Однако прочие действия выполняются таким же образом, как и в «родной» утилите.
Запустить скрипт вы сможете таким образом:
- Зайдите в PowerShell от имени администратора.
- При помощи команд cd укажите месторасположение требуемого файла. Например, e: cd\ cd work .\ имя_файла. Ps1, или e: \work\ имя_файла.ps1
- В этом случае e: — имя жёсткого диска, где находится файл.
- Жмите Enter.
Программа обязательно покажет вам сообщение с текстом «Не удаётся загрузить файл ___ .Ps1, так как выполнение скриптов запрещено для этой системы…», когда вы будете первый раз запускать команду. Дело в том, что Windows оснащён защитой от вмешательства благодаря разработчикам, поэтому никто из пользователей по умолчанию не имеет доступа на выполнение таких действий. Но, это ограничение можно очень просто обойти.
Как? В тексте, возникающем вместе с ошибкой, будет рекомендация ввести команду get-help about_signing, чтобы получить больше информации. Вы можете выполнить эти указания, или использовать комбинацию Set-ExecutionPolicy remotesigned — после её ввода потребуется подтверждение, и ограничение будет снято.
Другие вопросы по пользованию
У многих возникает вопрос, как узнать версию PowerShell? Для этого выполните следующее:
- Введите $PSVersionTable.
- Если это ни к чему не привело, значит, у вас версия 1.0 — для неё есть команда $host.version.
- В ином случае появится подробная информация о том, какая версия приложения установлена на ПК.
1. Написание скрипта
Скрипт PowerShell (не важно какой версии) — это текстовый файл с расширением *.ps1 .
Вот пример простого Power Shell срипта (файл systemInfo.ps1 ):
# Retrieve WMI object for the operating system
Get-WmiObject Win32_OperatingSystem
Этот файл можно создавать и редактировать, например, в FAR Manager.
Обратите внимание , что FAR Manager хоть и может работать в консоли Power Shell, но выполняет из-под себя скрипты в окружении обычной Windows-консоли cmd . То есть, FAR Manager можно использовать только для создания и редактирования PowerShell скриптов, но не для запуска. Но прежде чем разочаровываться, прочитайте пункт 3.
2. Запуск срипта
Скрипт нужно выполнять из консоли Power Shell, а не из обычной консоли Windows. В консоли Power Shell необходимо перейти в каталог, где лежит скрипт (командами cd ), и затем запустить сам скрипт, обязательно прописав перед ним символы «.\» . Например, имеем путь к файлу скрипта d:\work\systemInfo.ps1 . Тогда команды запуска будут выглядеть так:
cd \
cd work
.\systemInfo.ps1
или так (просто указывается полный путь к скрипту):
d:\work\systemInfo.ps1
Скорее всего, при запуске скрипта появится следующая ошибка:
Не удается загрузить файл D:\work\systemInfo.ps1, так как выполнение скриптов запрещено для данной системы. Введите «get-help about_signing» для получения дополнительных сведений.
строка:1 знак: 18
CategoryInfo: NotSpecified: (:) , PSSecurityException
FullyQualifiedErrorId: RuntimeException
Ошибка появляется из-за того, что по-умолчанию в Power Shell включена максимальная политика безопасности, которая позволяет выполнять команды PowerShell в командной строке, но не позволяет в той же командной строке выполнить скрипт с командами PowerShell.
Чтобы резрешить выполнение PowerShell скриптов, нужно создать *.bat файл, например enableScript.bat со следующим содержимым:
powershell -Command Set-ExecutionPolicy RemoteSigned
Этот *.bat файл можно выполнить в любой консоли: хоть в PowerShell, хоть в обычной cmd . После выполнения этого файла, PowerShell-скрипты станут запускаться в консоли PowerShell.
3. Запуск PowerShell-скрипта из обычной Windows-консоли cmd
Скрипт PowerShell можно выполнить и из обычной консоли Windows. Для этого можно воспользоваться командой:
Powershell -File ./systemInfo.ps1
Таким образом можно выполнять скрипты прямо из FAR Manager, и они будут работать.
Но тут есть небольшая тонкость. Параметр -File срабатывает только на локальных путях, даже если путь указан относительный «./» . То есть, если *.ps1 — файл лежит на локальном диске C: или D: , то такой вызов будет работать. Но если попробовать выполнить скрипт, расположенный на доменном ресурсе, то скрипт не будет найден. Возможно, это исправят в следующих версиях PowerShell.
Опытные пользователи операционной системы Windows 10 могли слышать об утилите командной строки PowerShell. Также с ней могут быть знакомы имеющие опыт работы с Windows 7 и 8.1. После многих лет использования приложения командной строки Windows и файлов формата.bat пришло время познакомиться с более функциональным инструментом.
PowerShell является ценным пополнением списка инструментов Windows и его масштаб может отпугнуть некоторых пользователей. Что это — скриптовый язык или командная оболочка? Не стоит беспокоиться: несмотря на обширные возможности, освоить PowerShell по силам каждому.
Шаг 1: установка
Для начала нам необходима сама утилита PowerShell. Если вы работаете с Windows 10, у вас уже установлена версия PowerShell 5. Обновление Windows 10 Anniversary Update использует версию 5.1, но разница незаметна. В Windows 8 и 8.1 применяется PowerShell 4, чего тоже вполне достаточно. Установка PowerShell на Windows 7 не доставит проблем, но всё же пару лишних шагов придется сделать. В частности, нужно дополнительно установить.Net Framework. Можно установить Windows Management Framework, в состав которого входит PowerShell.
У PowerShell есть два интерфейса. Опытные пользователи могут выбрать полноценный графический интерфейс, известный как Integrated Scripting Environment (ISE). Новичкам лучше использовать консоль PowerShell, простой текстовый интерфейс в стиле командной строки Windows или даже DOS 3.2.
Для запуска PowerShell от имени администратора в Windows 10 нажмите на кнопку «Пуск» и прокрутите список приложений до Windows PowerShell. В Windows 8.1 ищите Windows PowerShell в папке System в Windows. В Windows 7 оболочка располагается в папке Accessories. В качестве обычного пользователя PowerShell можно запустить точно так же, используя левую кнопку мыши вместо правой.
В любой версии Windows можно применить поиск. Для удобства дальнейшего использования можно закрепить PowerShell на панели задач.
Шаг 2: старые команды Windows
Синтаксис команд Windows в PowerShell работает привычным образом. Например, cd меняет папки, dir показывает список всех файлов и папок внутри текущей папки.
В зависимости от метода запуска консоли PowerShell можно начать в c:\Windows\system32 или в c:\Users\. В примере на скриншоте используется команда cd .. (с пробелом) для перехода на один уровень вверх за раз, затем запускается команда dir для отображения списка файлов и папок в директории C:\ .
Шаг 3: установка файлов помощи
Команды вроде cd и dir не являются активными командами оболочки PowerShell. Это так называемые псевдонимы (aliases) — замены настоящих команд PowerShell. Псевдонимы удобны для тех, кто имеет большой опыт работы с командной строкой. Однако они не затрагивают глубин PowerShell.
Чтобы начать знакомиться с возможностями PowerShell, наберите help и нужную вам команду. На скриншоте показана команда .
Команда help говорит, что dir является псевдонимом команды PowerShell Get-ChildItem . Если набрать get-childitem в PS C:\> , увидите то же самое, что и при использовании команды dir .
Как указано внизу скриншота, файлы помощи для PowerShell не устанавливаются автоматически. Для их получения запустите PowerShell от имени администратора и наберите update-help . Установка файлов помощи займёт несколько минут, ряд модулей могут отсутствовать — например, в данном случае не установились Help for NetWNV и SecureBoot. Когда всё готово, полная система помощи всегда будет давать нужные подсказки.
Теперь наберите команду get-help и любую интересующую вас команду («cmdlet» на языке PowerShell, по-русски командлеты), будет показано её описание. Например, get-help get-childitem выдаёт список опций get-childitem . Также можно вывести разные возможные варианты. Например
get-help get-childitem -examples
выдает семь подробных примеров использования get-childitem . Команда
get-help get-childitem -detailed
включает в себя эти семь примеров и подробные разъяснения каждого параметра в командлете get-childitem .
Шаг 4: получение помощи по параметрам
На скриншоте вы могли заметить два списка под SYNTAX для get-childitem . Наличие двух разных синтаксисов означает возможность применения двух способов запуска командлет. Как держать синтаксис отдельно друг от друга и что означают параметры? Ответ простой, если знать трюк.
Для получения подробностей относительно параметров командлеты get-childitem или любой другой используйте параметр -full :
get-help get-childitem -full
Это выдает список того, что вы можете сделать с командлетой и что случится. Смотрите на скриншот.
Просмотр описания параметров позволяет заметить, что get-childitem даёт возможность получить объект child (вроде названия подпапки или имени файла) в указанном месте, с совпадением определённых символов или без. Например:
get-childItem “*.txt” -recurse
возвращает список файлов «*.txt» в текущей папке и всех подпапках (из-за параметра -recurse ). Тогда как
get-childitem “HKLM:\Software”
возвращает список всех ключей реестра верхнего уровня в HKEY_LOCAL_MACHINE\Software .
Если вы когда-нибудь пытались попасть в реестр при помощи командной строки Windows или файлов.bat, вы сможете оценить функциональность этого варианта доступа.
Шаг 5: изучение имён
Есть причина того, почему показанные до сих пор командлеты выглядят сходным образом: get-childitem, update-help, get-help используют единую схему глагол-существительное. Это соглашение применяют все командлеты PowerShell, в них глагол стоит перед единственным существительным. Это понравится тем, кто в своё время пострадал от непостоянства названий команд в языках VB и VBA.
Взгляните на самые распространенные командлеты:
set-location : устанавливает текущую рабочий локацию на определённую локацию
get-content : получает содержимое файла
get-item : получает файлы и папки
copy-item : копирует объект из одной локации в другую
remove-item : удаляет файлы и папки
: получает процессы, запущенные на локальном или удаленном компьютере
get-service : получает сервисы, запущенные на локальном или удаленном компьютере
invoke-webrequest : получает содержимое с веб-страницы в интернете
Для просмотра работы определённой командлеты используйте get-help как в случае
get-help copy-item -full
На основе описания в помощи можно понять, что необходимо командлете. Например, если вы хотите копировать все файлы и папки из Documents в c:\temp , используйте
copy-item c:\users\ \documents\* c:\temp
Введя эту команду, вы увидите несколько интересных возможностей окружения PowerShell. Например, если набрать copy-i и нажать кнопку Tab, PowerShell заполнит Copy-Item . Если неправильно набрать командлету и PowerShell не может распознать её, даётся полное описание того, что было сделано не так.
Попробуйте данную командлету:
invoke-webrequest askwoody.com
Вы получите краткий список заголовков, изображений, ссылок и прочего содержимого веб-страницы. Обратите внимание в get-help на список invoke-webrequest , который «возвращает коллекцию форм, ссылок, изображений и прочие важные элементы HTML» — именно то, что должно показываться на экране.
Некоторые командлеты помогают управлять самим PowerShell:
get-command : список всех доступных командлет
get-verb : список всех доступных глаголов
clear-host : очистка экрана программы-хоста
Разные параметры позволяют уменьшать команды и сужать круг полезных опций. Например, для просмотра списка всех командлет, работающих с сервисами Windows, введите
get-command *-service
Будут показаны все глаголы, доступные с существительным service . Вот их список:
Get-Service
New-Service
Restart-Service
Resume-Service
Set-Service
Start-Service
Stop-Service
Suspend-Service
Можно объединять эти командлеты с другими.
Шаг 6: использование труб
Если вы знакомы с командной строкой Windows или пакетными файлами, то знаете о перенаправлении и трубах. Перенаправление (символ >) и трубы (символ |) берут результат действия и прикрепляют его в другое место. Например, можно перенаправить результат команды dir в текстовый файл или передать результат команды ping в команду find для фильтрования интересных результатов, вроде
dir > temp.txt
ping askwoody.com | find “packets” > temp2.txt
Здесь во второй команде find ищет строку packets , взятую из адреса askwoody.com командой ping и объединяет все совпадающие строки в файл под названием temp2.txt .
Первая из этих команд отлично работает в PowerShell. Для запуска второй команды потребуется нечто вроде
ping askwoody.com | select-string packets | out-file temp2.txt
Использования перенаправления и труб значительно расширяет возможности командной строки Windows: вместо бесконечного прокручивания вниз по экрану в поиске текстовой строки можно отфильтровывать нужные команды Windows.
Powershell обладает поддержкой pipe , причём она не ограничена текстом. PowerShell позволяет передавать целый объект из одной командлеты в другую, где объект представляет собой комбинацию данных (называемых свойствами) и действий (методов), которые могут использовать эти данные.
Сложная часть начинается при выстраивании объектов. Поставляемые одним командлетом объекты должны совпадать с типом объектов, принимаемых получающим командлетом. Текст является весьма простым типом объектов, так что если вы работаете с текстом, выравнивание объектов является простой задачей. Остальные объекты не такие элементарные.
Как это понять? Используйте командлету get-member . Если вы хотите знать, какой тип объекта обрабатывает командлета, проведите её через get-member . Например, если вы пытаетесь понять запущенные на компьютере процессы и сузили опции до командлеты , вот как узнать результат командлеты:
get-process | get-member
Запуск этой командлеты выдаёт длинный список свойств и методов для , но в самом начале списка можно увидеть тип объекта, который создает :
TypeName: System.Diagnostics.Process
Нижеприведенный скриншот также показывает свойства под названием get-process Handles, Name, NPM, PM, SI, VM и WS .
Если вы хотите манипулировать результатом для работы с этим командлетом (вместо отображения длинного списка активных процессов на мониторе), нужно найти другую команду, которая в качестве вводных данных принимает System.Diagnostics.Process . Для поиска нужной командлеты снова используйте возможности PowerShell:
get-command -Parametertype System.Diagnostics.Process
Эта командлета выдает список командлет, которые могут обрабатывать System.Diagnostics.Process .
Некоторые командлеты известны тем, что принимают почти любой вид данных. Главной среди них является . Эта командлета пропускает через себя каждый посылаемый по трубе объект, один за одним, и применяет к нему заданной критерии выбора. Существует специальный маркер под названием $_ , который позволяет использовать каждый предмет в трубе, один за раз.
Допустим, вы хотите получить список всех запущенных на компьютере процессов с названием «svchost», то есть хотите сопоставить свойство Name процессу svchost . Используйте команду:
get-process | where-object {$_.Name -eq “svchost”}
Командлета смотрит на каждый объект System.Diagnostics.Process , сравнивает .Name этого объекта с «svchost»; если есть совпадения, они выдаются на монитор. Смотрите на скриншот.
Шаг 7: анализ полезных команд PowerShell
К настоящему времени вы уже знаете достаточно много, чтобы суметь нанести урон компьютеру, так что будьте осторожны. Посмотрим, например, часто запрашиваемые команды PowerShell.
Эти команды работают только в Windows 10 и только при запуске PowerShell от лица администратора. Они предназначены для переустановки предустановленных приложений Windows 10 и могут пригодиться тем, кто сначала удалил эти программы, а затем решил вернуть их. Команды выглядит следующим образом:
Get-AppXPackage | Foreach {Add-AppxPackage -DisableDevelopmentMode -Register “$($_.InstallLocation)\AppXManifest.xml”}
Если запустить эту команду, игнорируйте обозначенные красным цветом предупреждения, и когда команда выполнена, перезагрузите компьютер; все предустановленные программы в Windows 10 появятся на своих местах.
Вот как работает данная команда. Get-AppXPackage проверяет все пакеты приложений в профиле пользователя. Даже если вы удалили приложение, оно остается в списке профиля пользователя.
Командлета Get-AppXPackage возвращает объект TypeName Microsoft.Windows.Appx.PackageManager.Commands.AppxPackage , который включает в себя полное имя пакета приложения и местонахождения соответствующего файла манифеста XML. Если запустить командлету get-appxpackage , вы увидите длинный список пакетов приложений. Скриншот показывает описание приложения Xbox.
Командлета Foreach посредством цикла проходит через каждый объект в AppXPackage , отправляя их командлету Add-AppxPackage . Согласно get-help для Add-AppxPackage , тут есть два ключевых переключателя:
- Переключатель -Register используется для регистрации существующих установок пакетов приложений, можно задать параметры DisableDevelopmentMode и Register
- Переключатель -DisableDevelopmentMode говорит Windows заново зарегистрировать существующий пакет приложения, который был отключён, не зарегистрирован или повреждён.
Строка «$($_.InstallLocation)\AppXManifest.x ml» описывает, где расположен файл manifest.xml . Если посмотреть на файлы AppXManifest.xml , вы увидите сложный список идентификаторов приложений, исполняемых файлов и большое количество визуальных элементов, связанных с приложением.
После перезагрузки все добавленные пакеты приложений скачиваются и устанавливаются из магазина Windows Store.
После перехода на операционную систему Windows 10 многие пользователи заметили в интерфейсе Проводника кнопку «Запустить PowerShell». В связи с этим в сети появилось много вопросов, пользователей интересовало, что это за программа Windows PowerShell и для чего она нужна. Если вас также интересует этот вопрос, то данный материал должен вам помочь.
Что такое Windows PowerShell
Windows PowerShell – это скриптовый язык и программа с интерфейсом командной строки для выполнения этих скриптов. Данный язык был выпущен в 2006 году в составе второго сервис-пака для Windows XP и с тех пор PowerShell является частью всех операционных систем от Microsoft. В 2008 году появилась вторая версия данного языка, и начиная с Windows 7 используется именно она. Файлы со скриптами Windows PowerShell имеют расширение PS1 и могут запускаться как привычные всем BAT и CMD файлы.
Windows PowerShell – это скриптовый язык, который разрабатывался в первую очередь для бизнес-клиентов Microsoft, которым нужно мощные инструменты для автоматизации задач по управлению серверами и компьютерами на базе Windows. В качестве основы для данного языка была использована платформа.NET, разрабатываемая компанией Microsoft с 2002 года.
Windows PowerShell позволяет автоматизировать массу разнообразных задач. С его помощью можно управлять файлами, службами, процессами, аккаунтами и настройками. Язык PowerShell понимает многие команды из обычной Командной строки Windows (CMD), но он имеет и свой собственный язык, состоящий из собственных команд, которые здесь называются командлетами.
Командлеты (на английском cmdlets) формируются по правилу Глагол-Существительное, например, Get-Help. Ознакомиться с основами Windows PowerShell можно с помощью справки (командлет «Get-Help»). Для получения общей информации просто введите команду «Get-Help», для получения справки о конкретном командлете введите «Get-Help Имя-командлета». Например, если ввести команду «Get-Help Get-Process», то мы получим справку о командлете Get-Process.
Как запустить программу Windows PowerShell
Программу Windows PowerShell можно запустить разными способами. Самый простой вариант, это просто воспользоваться поиском в меню «Пуск». Для этого откройте меню «Пуск», введите поисковый запрос «Windows PowerShell», после чего откройте найденную программу.
Также можно с помощью комбинации клавиш Windows-R и ввести команду «powershell».
В Windows 10 программу PowerShell можно запустить из любой папки. Для этого нужно нажать на кнопку «Файл» в верхнем левом углу Проводника и выбрать «Запустить Windows PowerShell».
Как пользоваться программой Windows PowerShell
Как мы уже сказали, с помощью программы PowerShell можно автоматизировать многие рутинные задачи в операционной системе Windows. Для примера мы продемонстрируем некоторые возможности, которыми обладает данный инструмент, для того чтобы стало понятно, как им пользоваться.
Очистка корзины . Для очистки корзины существует специальный командлет, который называется «Clear-RecycleBin ». Данный командлет пригодится при написании скриптов для обслуживания компьютеров. При выполнении командлета нужно указать диск, на котором нужно очистить корзину. Пример:
Clear-RecycleBin c:
На скриншоте внизу видно, как выполняется данный командлет. После введения команды «Clear-RecycleBin c: » появляется запрос на подтверждение. Для того чтобы продолжить выполнение командлета нужно ввести букву «Y» и нажать Enter.
Если к командлету «Clear-RecycleBin c: » добавить «-Force », то очистка корзины выполнится без запроса на подтверждение. Скриншот внизу.
Архивация файлов . Для архивации и распаковки файлов предусмотрены командлеты «Compress-Archive » и «Expand-Archive «. Например, для того чтобы архивировать папку «C:\test\» в архив «C:\archive\test2.zip» нужно выполнить следующий командлет:
Compress-Archive -LiteralPath C:\test\ -DestinationPath C:\archive\test2.zip
В результате выполнения показанной выше команды, в папке «C:\archive\» появится файл «test2.zip», в котором будет заархивировано содержимое папки «C:\test\».
Список командлетов для Windows PowerShell
Для Windows PowerShell существует огромное количество разных командлетов и описать их все в одной статье не получится. Поэтому предлагаем ознакомиться с самыми востребованными из них:
- Get-Help – получение справки;
- Update-Help – обновление справки;
- Get-Command – поиск командлетов;
- Get-Alias – поиск псевдонимов для командлетов;
- Get-PSDrive – просмотр подключенных дисков;
- Get-Member – просмотр свойств и методов, которые есть у объекта;
- Get-WindowsFeature – просмотр сведений о доступных ролях и компонентах сервера;
- Install-WindowsFeature (аналог Add-WindowsFeature) — устанавливает роли или компоненты на нужный сервер;
- Uninstall-WindowsFeature (аналог Remove-WindowsFeature) – удаляет роли или компонента сервера;
- Get-History – просмотр истории команд, которые вводились в этой сессии;
- Get-Variable – просмотр списка переменных и их значений;
- New-Variable – создание новой переменной;
- Set-Variable – установка значения переменной;
- Clear-Variable – удаление значения переменной;
- Remove-Variable – удаление переменной и ее значения;
- Format-List – просмотр результата команды в виде списка свойств, где в каждой строке отдельное свойство;
- Format-Table — просмотр результата команды в формате таблицы;
- Format-Wide — просмотр результата команды в виде широкой таблицы, в которой показывается только одно свойство для каждого объекта;
- Format-Custom – просмотр результата команды с использованием пользовательского представления;
- Export-Csv – экспорт данных в формат CSV;
- Import-Csv – импорт данных из CSV файла;
- Export-Clixml — экспорт данных в формат XML;
Полный список командлетов для Windows PowerShell вы можете получить, выполнив командлет «Get-Command -CommandType cmdlet».
Как запустить скрипт powershell из командной строки?
Первые шаги для пауэршельшиков
Приди ко мне брате в Консоль! — Админ Долгорукий. Много ярлыков улетело в корзину со времён выхода в свет 2008 Windows. Люди попроще дивились новому синему окошку, которое ребята из Майкрософт зачем-то вставили в свои новые продукты. Люди, которые сидят на блогах и знают программирование начали изучать это окошко. В итоге к народу начало приходить осознание того, что Майкрософт действительно разработали что-то новое и интересное.
И так, зачем вам это нужно? В основном, программа под названием PowerShell (в дальнейшем PS) предназначена для администраторов и программистов. Она позволяет автоматизировать примерно 99% всех действий в системе. С помощью неё вы можете настраивать удалённые компьютеры, запускать и перезапускать сервисы и производить обслуживание большиства серверных приложений. Как выяснилось, возможности у программы потрясающие.
Конечно же, продвинутые пользователи найдут множество способов использования этого восхитительного синего окошка. Задача этой статьи проста — показать вам малую долю возможностей PS и дать вам концептуальное понимание предмета. В действительности документации по предмету написано несметное количество, так что я не стремлюсь охватить всё. Я так же ознакомлю вас с набором утилит, которые позволят не вылезать из PS в принципе. Что представляет собой PS? Это интерпретатор командной строки.
Вы вводите необходимые команды, на экране отображается результат их выполнения. Всё просто. Всё было так со времён доса и старого доброго Юникса. Есть два основных отличия от предшественников, которые качественно выделяют PS среди других интерпретаторов.
- Очень хорошая интеграция с Microsoft .NET Framework. Это даёт вам возможность вплетать мощные программистские решения в свои команды и скрипты.
- Все значения, возвращаемые вам в терминал являются объектами, с которыми можно работать как с объектами, а не просто набором строк. Это позволяет вам создавать неимоверно мощные программные скрипты.
Приступая к работе
Если вы используете Windows 7 или 2008 то PS вам уже доступен. Для пользователей других версий Windows — добро пожаловать на сайт Майкрософт. После установки вы можете запустить консоль и настроить её по своему вкусу, нажав на иконку в заголовке окна. Вы можете выбрать шрифт и изменить сам размер окна. После этого, предпринимайте робкие шаги по выполнению первых команд. Для начала наберите
dir
и вы получите список папок в текущем каталоге. Приятным моментом для любителей Юникса будет тот факт, что команда
ls
работает так же хорошо, как и dir. В PS существует система назначения алиасов на различные команды. В действительности, то что вы сейчас сделали — это выполнили командлет (так в PS называются команды, встроенные в сам PS) Get-ChildItem. Вы можете попробовать просто набрать Get-ChildItem и получить тот же результат, что и в двух предыдущих командах. Для того, чтобы вы быстро ознакомились со списком всех алиасов наберите
ls Alias:\
И так, что-то произошло. Вы начали кое-что понимать. Сейчас я буду раскладывать всю магию по кусочкам. Первое. Командлеты в оригинальной нотации PS имеют следующую систему именования — Глагол-Объект. Это позволяет вам лучше понимать, что можно ожидать в результате выполнения того или иного командлета. Например,
Get-Process # Получить список процессов Remove-Item # Удалить что-то Get-Help # получить справку по чему-то Set-Alias # Создать новый алиас New-Item # Создать новый объект (Объектом может быть всё что угодно, например, файл)
Далее, в PS достаточно много очевидных вещей находится в непривычных для виндузятника местах. В частности, вы можете посмотреть, что за диски есть в вашей системе, набрав команду
Get-PSDrive
И в ответ вы получаете намного более интересный список дисков в вашей системе, нежели тот, что вы видите в «Моём Компьютере» Name Used (GB) Free (GB) Provider Root—- ——— ——— ——— —-Alias AliasC 16.56 63.44 FileSystem C:\cert Certificate \D .11 53.92 FileSystem D:\Env EnvironmentFunction FunctionHKCU Registry HKEY_CURRENT_USERHKLM Registry HKEY_LOCAL_MACHINEVariable VariableWSMan WSMan На диске Alias вы можете увидеть список всех алиясов в системе. Виртуальный диск Variable: хранит в себе все переменные, которые вы можете использовать в данной сессии. На диске Env — лежат переменные операционной системы. Диски HKCU и HKLM являются обёрткой для работы с соответствующими ветками реестра. Давайте углубимся. Набирайте Set-Location HKLM: # Или, если вы из людей подосёвее, набирайте cd HKLM: Ну и как вам новый и невероятный способ хождения по реестру всея машины? Вы можете сделать ls по ветке реестра или перейти в нужный «каталог», набрав cd SYSTEM. SKC VC Name Property— — —- ——— 2 0 BCD00000000 {} 4 0 HARDWARE {} 1 0 SAM {}Get-ChildItem : Requested registry access is not allowed.At line:1 char:3+ ls ps wordpad | ls Directory: C:\Program Files\Windows NT\Accessories Mode LastWriteTime Length Name—- ————- —— ——a— 6/28/2010 9:57 PM 4247040 wordpad.exe Вот это меня поразило до глубины души.
Теперь можно переходить к изучению окружения
Как я уже говорил, всё что вы видите на экране не является строками, а является объектами. Например, результат выполнения команды ps возвращает нам список процессов, запущенных в системе. Но как узнать, что же у нас в руках? Для этого мы воспользуемся командлетом Get-Member, который откроет нам методы любого класса. Давайте узнаем, что содержится в том же самом процессе, который выдаёт нам команда ps. ps wordpad | Get-Member Набирайте, и смотрите на список членов класса, которые вы можете увидеть в классе System.Diagnostics.Process.
Тоесть, фактически, командлет ps вернул нам массив объектов типа Process и мы можем попрограммировать их! Давайте поглумимся над блокнотом. PS C:\> notepad PS C:\> ps notepad Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName ——- —— —— —— —— —— — ———— 70 4 1148 5376 56 0.30 3900 notepad PS C:\> ps notepad | get-member -type method TypeName: System.Diagnostics.Process Name MemberType Definition—- ———- ———-BeginErrorReadLine Method System.Void BeginErrorReadLine()BeginOutputReadLine Method System.Void BeginOutputReadLine()CancelErrorRead Method System.
Void CancelErrorRead()CancelOutputRead Method System.Void CancelOutputRead()Close Method System.Void Close()CloseMainWindow Method bool CloseMainWindow()CreateObjRef Method System.Runtime.Remoting.ObjRef CreateObj…Dispose Method System.Void Dispose()Equals Method bool Equals(System.Object obj)GetHashCode Method int GetHashCode()GetLifetimeService Method System.Object GetLifetimeService()GetType Method type GetType()InitializeLifetimeService Method System.Object InitializeLifetimeService()Kill Method System.Void Kill()Refresh Method System.
Void Refresh()Start Method bool Start()ToString Method string ToString()WaitForExit Method bool WaitForExit(int milliseconds), Syst…WaitForInputIdle Method bool WaitForInputIdle(int milliseconds),… Вот это неплохое количество методов, которые мы можем запустить, используя шелл. И так, как же это сделать? Просто. (ps notepad).WaitForExit() Если вы возьмёте результат выполнения командлета в скобки, то вы сможете обратиться к нему, как к объекту в вашей программе, прямо из командной строки. После запуска этого метода шелл завис и ждёт у моря погоды. Нажмите пару раз Enter. Ничего не происходит.
Что же, закройте открытый блокнот. Вуаля, вы снова в шелле. Я думаю, теперь вы должны погулять свою фантазию. Попробуйте, пустите через конвейер в get-member результаты выполнения ls или других командлетов, каких только можете найти. Если вы увидели, что в свойстве какого-то объекта лежит ещё один объект, не стесняйтесь пускать его на Get-Member (ps notepad).StartTime | Get-Member И так далее до бесконечности. Задача для пытливых умов. Пролетела новость, что рефлектор станет платным. Как сделать рефлектор на чистом PS? Кстати, это не такая уж и трудная задача.
Ну, вот, мы немного разобрались с тем, как узнать, что нас окружает. Теперь, мы готовы к тому, чтобы понять ещё парочку принципов, существующих в шелле.
Переменные и объекты
И так, пару слов по поводу переменных. В PS они бывают нетипизированными: $processList = ps И типизированными PS C:\> [DateTime]$x = «febbrrr»Cannot convert value «febbrrr» to type «System.DateTime». Error: «The string was not recognized as a valid DateTime. There is a unknown word starting at index 0.
«At line:1 char:13+ [DateTime]$x $client = New-Object System.Net.WebClientC:\> $client.DownloadString(«http://google.com») А вот это уже другое дело. Только что мы из подручных средств собрали себе wget на коленке. Как вам такой поворот событий? Что же, в этот момент можно идти в MSDN и подряд перебирать все классы, смотреть, что в них есть интересного.
Всё это позволяет создавать очень гибкие скрипты.
Кстати, о скриптах
PS позволяет выполнять скрипты. Ура! Делает он это с волшебного пендаля. Неура. По умолчанию в PS запрещён запуск скриптов, которые не были подписаны цифровой подписью. Для запуска скрипта вы должны его либо подписать (для этого используйте help about_signing) либо, просто понизить уровень безопасности, и выполнить set-executionpolicy remotesigned обычно я делаю второе. Ибо первый вариант требует скачивания многотонных SDK и долгого колдовства. Хотя, напомню о безопасности, и скажу, что второй вариант не канает для супер-сервера-всея-руси.
После выполнения этих действий, вы будете готовы писать свой первый скрипт. Для начала, рекомендую создать для него файл: New-Item -type file $PROFILE Переменная $PROFILE содержит в себе адрес файла с вашим профилем в PS. Этот файл будет запускаться в тот момент, когда вы стартуете PS. Плюс заключается в том, что вы можете нашпиговать свой профиль разными мелкими и полезными скриптами, которые помогут вам автоматизировать производство.
Теперь вы можете начать редактирование своего профиля: vim $PROFILE (О, кстати, я вам не сказал, но в PS, на мой взгляд, лучше всего смотрится текстовый редактор vim. Возможно кто-то назовёт меня настоящим извращенцем, но на самом деле, я уже не раз пытался использовать что-то другое, но всегда возвращался к виму. Попробуйте и вы. Его не просто изучить с нуля, но если вы поймёте основы, то сможете очень быстро и удобно редактировать тексты.
) Ладно, теперь повторим эту команду без того, чтобы умничать: notepad $PROFILE Ну, вот, например, то, что лежит у меня в профиле $webClient = New-Object System.Net.WebClient$cred = New-Object System.Net.NetworkCredential(«login», «Pass»)$webClient.Proxy = New-Object System.Net.WebProxy(«www.proxy.
adrress», $true, $null, $cred) Так как мы используем прокси сервер, а вэб клиент является моим любимым инструментом для работы, то я уже заготовил для себя переменную с этим клиентом, чтобы иметь возможность безболезненно подключаться к интернету и не отягощать себя вводом пароля. Что ещё можно запихнуть в профиль? Всё что угодно. Настройки цвета окна, ваши любимые функции и алиасы. Алиасы на ваши излюбленные программы и скрипты автоматизации… На самом деле, я уже написал достаточно много. Вы увидели для себя кое-что новое.
Я прекрасно знаю, что уровень этой статьи — для начинающих, но и продвинутые админы найдут для себя несколько интересных моментов. Моей задачей было предоставить вам возможность получить общее представление о том, что вы можете сделать.
Что же, вот, напоследок, вам задачи, над которыми можно поломать голову и решить интересные проблемы: Написать скрипт, который сортирует изображения по папкам, исходя из их размера (для получения размера файла можно использовать дотнет объекты или ком объекты, предоставляемые эксплорером) Для выполнения этого, вам уж точно понадобиться хорошо изучить Where-Object или Foreach-Object. Написать простой NMAP Что будет, если запустить команду Пинг в цикле? А теперь, возьмите выход от этой команды и пропарсите его как строку.
Вам однозначно придётся прочитать мануал по -le -ge и том, как работать со строками. Написать парсер для башорга. Чтобы, после логина в систему, вам на выбор выдавалась цитата из лучших за последние пять лет. Тут можно использовать регэкспы, с которыми PS очень хорошо дружит. Поиграться с переменной $host и сделать из синего экрана Матрицу! Что ещё можно делать? Матёрые COM программисты найдут для себя отличный способ повеселиться, когда обнаружат, что new-object имеет ключ -comObject.
Фактически, это открывает вам ворота к полному управлению практически любой функцией локального и удалённого компьютера. Ещё хочу заметить, что последние версии программного обеспечения от Microsoft поддерживают работу в PowerShell. Например, есть SQL PowerShell, который поставляется с 2008 сиквелом и позволяет сделать ls по записям в любой таблице. Это даёт ещё больший простор для фантазий. Так же, хочу заметить, что комьюнити по разработке на PS очень сильно растёт и ширится. В частности, вы можете найти скрипты, готовые для чего угодно — например, вы можете нагуглить себе способ управления ITunes через PowerShell или способ использования Google Desktop Search в PS.
Что же, мой неинтересующийся друг, надеюсь, я дал тебе что-то интересное, и ты теперь возьмёшься за покорение интерпретатора, который действительно поможет тебе упростить твою нелёгкую программерскую жизнь и даст тебе возможность автоматизировать больше и быстрее. Очень приятно, что ты прочитал мою статью. Спасибо большое, я могу продолжать конкретно описывать определённые области, если вдруг тебе станет очень интересно.
- powershell
- .NET
- скрипт
- шелл
Хабы:
Источник: https://habr.com/ru/post/113913/
Написание и запуск скриптов в PowerShell
Программа PowerShell — это альтернативная командная строка с обширной функциональностью. Многие владельцы компьютеров, которые неплохо ориентируются в системных процессах, интересуются возможностями её использования на Windows 10 и предыдущих версиях этого обеспечения, чтобы менять конкретные процессы и настройки ПК под себя.
В использовании программы PowerShell нет ничего сложного. Просто следуйте всем инструкциям из этой статьи и у вас все получится
Если вы не являетесь знатоком в подобной тематике, только начинаете изучение командных строк и действий, доступных к выполнению в них, вам будет полезно узнать ответы на главные вопросы по пользованию таким приложением. Например, как запустить Windows PowerShell ISE Windows 10 и писать, работать со скриптами.
Как открыть PowerShell?
Это можно сделать несколькими следующими способами:
- Через Пуск — вы найдёте приложение в общем списке компонентов под буквой W.
- При помощи поиска в Панели задач — откройте её, и введите слово PowerShell для поиска.
- Используя меню «Выполнить» — запустите его через комбинацию Win+R и напишите название утилиты, после чего она будет найдена в системе.
- В коммандере задайте действие PowerShell — но, вы должны знать, что будете работать с приложением через уже запущенную строку, а не в отдельном окне.
- В параметрах Windows выберите «Свойства панели задач» и меню «Пуск». Во вкладке «Навигация» поставьте флажок на строке «Заменить командную строку оболочкой PowerShell…». Теперь вы сможете включать утилиту комбинацией Win+X.
Как писать и запускать скрипты?
Как создать скрипт PowerShell и запустить его? Это можно попросту сделать в блокноте — используя его, укажите в новом документе необходимые вам команды. После сохраните его, но поменяйте формат на .ps1 — именно такое расширение имеют файлы этой системной утилиты.
Писать скрипты в самом приложении можно так:
- Запустите его.
- Нажмите на пункт «Создать».
- Или кликните на «Файл», и в появившемся списке выберите «Создать».
- Напишите все команды, которые нужно выполнить, сохраните файл.
Скрипты ещё можно писать и редактировать в FAR Manager, но их нельзя использовать непосредственно в таком приложении, ведь оно отображает файлы этого типа через стандартную строку cmd. Однако прочие действия выполняются таким же образом, как и в «родной» утилите.
Запустить скрипт вы сможете таким образом:
- Зайдите в PowerShell от имени администратора.
- При помощи команд cd укажите месторасположение требуемого файла. Например, e: cd\ cd work .\ имя_файла. Ps1, или e: \work\ имя_файла.ps1
- В этом случае e: — имя жёсткого диска, где находится файл.
- Жмите Enter.
Программа обязательно покажет вам сообщение с текстом «Не удаётся загрузить файл ___ .Ps1, так как выполнение скриптов запрещено для этой системы…», когда вы будете первый раз запускать команду. Дело в том, что Windows оснащён защитой от вмешательства благодаря разработчикам, поэтому никто из пользователей по умолчанию не имеет доступа на выполнение таких действий. Но, это ограничение можно очень просто обойти.
Как? В тексте, возникающем вместе с ошибкой, будет рекомендация ввести команду get-help about_signing, чтобы получить больше информации. Вы можете выполнить эти указания, или использовать комбинацию Set-ExecutionPolicy remotesigned — после её ввода потребуется подтверждение, и ограничение будет снято.
Другие вопросы по пользованию
У многих возникает вопрос, как узнать версию PowerShell? Для этого выполните следующее:
- Откройте приложение.
- Введите $PSVersionTable.
- Если это ни к чему не привело, значит, у вас версия 1.0 — для неё есть команда $host.version.
- В ином случае появится подробная информация о том, какая версия приложения установлена на ПК.
Ещё один вопрос, на который стоит дать ответ — как удалить PowerShell? Для этого потребуются такие действия:
- Зайдите через Панель управления в меню установки и удаления программ.
- Найдите ветку Microsoft Windows
- Удалите обновление для компонента WindowsPowerShell (TM), следуйте инструкциям системы.
Теперь вы знаете всё о том, как писать и запускать скрипты PowerShell, сможете пользоваться такой командной строкой для многих операций в системе. Дополнительно вы всегда имеете возможность узнать версию этого продукта и даже частично удалить его — из-за того, что он установлен вместе с системными компонентами, полностью сделать это всё равно не получится. Посоветуем только быть аккуратным при выполнении всех подобных действий, чтобы не навредить компьютеру в целом.
Источник: https://nastroyvse.ru/programs/review/kak-pisat-i-zapuskat-skripty-powershell.html
Основы Windows PowerShell (создание и запуск скриптов
В этом видео мы поговорим о инструменте, который облегчает жизнь специалистам IT, выполняющим рутинную работу. Речь пойдет о PowerShell, а точнее о создании и запуске скриптов в среде PowerShell.
В данном видео, мы посмотрим:
— как выглядит оболочка PowerShell,
— уточним версию компонентов и обновим их до актуального состояния.
— поговорим о PowerShell ISE, для чего она нужна и как ей пользоваться.
— обретем базовые знания, касающиеся синтаксиса PowerShell.
— разберем решение реальной задачи при помощи командлетов PowerShell.
Постановка задачи для PowerShell
Итак, есть некая организация, учетные записи компьютеров которой хранятся в активном каталоге. Предположим, что в зависимости от свойств, учетные записи располагаются в разных организационных единицах. Задача состоит в том, чтобы получить список компьютеров по заданным параметрам поиска из всего домена или определённой организационной единицы, не выписывая данные вручную. Также я предлагаю выгрузить список в текстовый файл, для последующей аналитической обработки.
Сравнение командной строки с PowerShell
Начнем с запуска обычной командной строки, далее запустим оболочку PowerShell. На первый взгляд они очень похожи, но принципиальные различия в них есть. Оболочка PowerShell, была разработана и выпущена как раз для того что бы сменить стандартную командную строку. Она, если можно так выразиться, является расширенной версией типично командной строки windows.
Оболочка позволяет выполнять как стандартные команды, используемые в командной строке, так и сценарии, благодаря более глубокой интеграции с операционной системой. Так же технология PowerShell, позволяет встраивать сценарии в приложения, для реализации различных функций.
Проверка версии PowerShell
Для полноценной работы с оболочкой, и использования доступных функций, необходимо понимать с какой версией PowerShell ведется работа. Для того что бы узнать какая версия PowerShell установлена, необходимо запустить команду $PSVersionTable. На слайде представлен вывод данной команды, после обновления. В нашем случае версия 4.0 Процесс обновления оболочки будет представлен в практической части видео.
PowerShell ISE
Для того что бы не навредить системе и проверить работоспособность скрипта, разработку, отладку и тестирование удобно проводить в специальной среде. PowerShell ISE дает такую возможность. Интерфейс приложения разделен на 3 части. В верхней части вы можете добавлять код, в нижней части получать вывод команд, а правая часть является своеобразной справкой. В ней вы можете подсмотреть необходимые для процесса командлеты. Более того в этой среде реализованы различные функции, такие как подсветка синтаксиса, конструктор команд и авто заполнение, что существенно облегчает программирование.
Построение команд в PowerShell
Теперь давайте немного поговорим о синтаксисе в PowerShell. Необходимо запомнить основной принцип построения командлетов. Вначале идет ГЛАГОЛ, далее СУЩЕСТВИТЕЛЬНОЕ и уже через тире, вы можете ввести параметры для этого командлета. На слайде представлен сложный командлет, но принцип остается неизменным. Сначала мы запрашиваем вывод справки Get-help, а затем указываем для какой команды мы хотим это сделать Get-date. Используя PS ISE, вы сможете получать список доступных параметров до ввода самого параметра, просто введя тире и выбрав необходимы параметр из списка.
Особенности запуска скриптов в PowerShell
Необходимо упомянуть об особенностях запуска скриптов PowerShell. Данное средство администрирования и автоматизации обладает очень высоким потенциалом и является мощным инструментом, поэтому разработчиками было принято решение ограничить запуск скриптов по умолчанию. Существует 4-е основных политики безопасности, регулирующих запуск скриптов на целевом устройстве. Вы можете ознакомиться с ними на данном слайде. У каждой политики свои особенности, и они применимы для разных сценариев. В нашем случае, для практической работы мы разрешим выполнение неподписанных скриптов используя политику «unrestricted»
Создание и запуск скриптов PowerShell на практике
Перейдем непосредственно к демонстрации. В качестве стенда для практической работы будет использован сервер с Windows Server 2016, с установленной ролью активного каталога и клиентская машина на windows 10.
Этапы видео:
- На контроллере домена смотрим структуру AD, определяем уч. записи компьютеров в каталоге, запоминаем.
- На клиентской машине запускаем PS, смотрим версию, обновляем до актуальной, обновляем справку.
- Устанавливаем RSAT для возможности подключения AD модуля в PS.
- Выставляем необходимые настройки политики для запуска скриптов.
- Сооружаем скрипт, позволяющий получить список машин из определенной OU по фильтру имени, запускаем, получаем результат, выгружаем в TXT.
Bonus: получение справки по командам get-help get-* с параметром «example» и «Full». Для вывода примеров использования команды.
Выводы: Сегодня мы поговорили о PowerShell и на практике посмотрели его возможности по упрощению рутинных задач для IT. В этот инструмент разработчиками заложен огромный потенциал и на мой взгляд знание PowerShell, является необходимым навыком для современного системного администратора.
Спасибо за внимание!
В описании данного видео, есть временные метки, по которым вы сможете сразу перейти к моменту в видео, который вас больше всего интересует.
Список временных меток:
- Обзор видеоурока «Основы Windows PowerShell»
- Постановка задачи для PowerShell
- Сравнение командной строки с PowerShell
- Проверка версии PowerShell
- PowerShell ISE
- Построение команд в PowerShell
- Особенности запуска скриптов в PowerShell
- Создание и запуск скриптов PowerShell на практике
Источник: https://sys-team-admin.ru/videouroki/administrirovanie/204-osnovy-windows-powershell-sozdanie-i-zapusk-skriptov-ustanovka-obnovlenie-versii-powershell-ise.html
Ярлык для запуска скрипта PowerShell
Написали полезный PowerShell скрипт, который часто используете и теперь есть желание запускать скрипт через ярлык, как остальные программы в Microsoft Windows, то читайте дальше.
Если не знали, то знайте, что PowerShell запускается с параметрами. И параметры запуска ещё больше расширяют возможности практического использования PowerShell. Список доступных параметров и подробное описание каждого представлены в справке:
powershell.exe /?
Представляя себе возможности запуска PowerShell, которые даёт использование описанных в справке параметров, приступим к разбору непосредственного вопроса заметки. При этом надо иметь в виду, что PowerShell скрипт может быть реализован в виде одной строки кода или отдельного файла с кодом. Поэтому рассмотрю создание ярлыка для каждого случая.
В обоих примерах скрипт будет выполнять очистку временных файлов в Microsoft Windows. Для его выполнения требуются права Администратора.
Ярлык для запуска однострокового скрипта PowerShell
В диалоге мастера создания нового ярлыка в поле для указания пути к объекту, вставьте следующую команду и сохраните ярлык, задав ему имя.
powershell.exe -Command "& {Remove-Item @('C:\Windows\Temp\*', 'C:\Windows\Prefetch\*', 'C:\Documents and Settings\*\Local Settings\temp\*', 'C:\Users\*\Appdata\Local\Temp\*') -Force -Recurse}"
В случае, если передаваемый для исполнения код скрипта содержит фигурные скобки или сложные варианты экранирования кавычками, вместо параметра Command используется параметр EncodedCommand, принимающий строку, закодированную в Base64. Пример работы с параметром EncodedCommand показан в справке PowerShell.
Ярлык для запуска скрипта PowerShell из файла
Предположим, что следующий код скрипта PowerShell сохранён в файле %HOMEDRIVE%%HOMEPATH%”\Documents\WindowsPowerShell\Scripts\Remove-TempFiles.ps1:
Set-Location 'C:\Windows\Temp'
Remove-Item * -Recurse -Force
Set-Location 'C:\Windows\Prefetch'
Remove-Item * -Recurse -Force
Set-Location 'C:\Documents and Settings'
Remove-Item '.\*\Local Settings\temp\*' -Recurse -Force
Set-Location 'C:\Users'
Remove-Item '.\*\Appdata\Local\Temp\*' -Recurse -Force
Для запуска PowerShell скрипта из файла, в диалоге мастера создания нового ярлыка в поле для указания пути к объекту, используйте следующую команду.
powershell.exe -ExecutionPolicy Bypass -File %HOMEDRIVE%%HOMEPATH%"\Documents\WindowsPowerShell\Scripts\Remove-TempFiles.ps1"
Обратите внимание на значение параметра ExecutionPolicy равное Bypass, которое разрешает выполнение любых скриптов, при этом никакие предупреждения и запросы не выводятся. Используйте этот параметр с осторожностью, задавая политику выполнения скриптов PowerShell согласно требуемому уровню безопасности.
Использование ярлыков для запуска скриптов PowerShell повышают удобство практического использования PowerShell, а это повод написать новый скрипт, автоматизирующий очередную рутинную задачу или даже заменяющий отдельную программу.
Страница не найдена – Information Security Squad
Как искать эксплойты с помощью SearchSploit Мы уже писали недавно о том как 📊 Как искать уязвимости CVE? | (itsecforu.ru) Теперь предлагаем рассмотреть Searchsploit более детельно. Searchsploit это инструмент поиска в командной строке, в который включен Репозиторий Exploit Database. Инструмент позволяет вам всегда иметь под рукой Exploit Database, куда вы мы ни отправлялись. SearchSploit дает […]
Контейнеры Docker обычно считаются неизменяемыми после начала их работы. Однако некоторые параметры конфигурации можно изменять динамически, например, имя контейнера и лимиты его аппаратных ресурсов. В этом руководстве мы покажем вам, как использовать встроенные команды Docker для изменения выбранных параметров запущенных контейнеров. Мы также рассмотрим, что не следует изменять, и обходные пути, которые можно использовать, если […]
CredNinja – это инструмент для быстрой проверки достоверности учетных данных (или хэшей) по всей сети или домену. Инструмент работает при предоставлении ему дампа списка учетных данных (или хэшей, он может передавать хэш), и списка систем в домене (автор предлагает сначала просканировать порт 445, или вы можете использовать “-scan”). Он скажет вам, действительны ли учетные данные, […]
assetfinder – это Go-инструмент для поиска связанных доменов и поддоменов, которые потенциально связаны с заданным доменом, из различных источников, включая Facebook, ThreatCrowd, Virustotal и другие. assetfinder использует различные источники, в том числе в сфере инфобезопасности и социальных сетях, которые могут дать соответствующую информацию: crt.sh certspotter hackertarget threatcrowd wayback machine dns.bufferover.run facebook – надо установить переменные […]
Цель этого руководства – показать, как удалить правила iptables в системе Linux. Можно удалять правила iptables по одному или очистить все правила в любой цепочке iptables за один раз. Вскоре вы увидите, как это сделать. Брандмауэр iptables в системах Linux – это очень полезная функция, которая позволяет системным администраторам контролировать с высокой точностью, какой сетевой […]
окон — Как запустить скрипт PowerShell
windows — Как запустить скрипт PowerShell — Myht.ruспросил
Просмотрено 2,3 млн раз
Как запустить сценарий PowerShell?
- У меня есть скрипт с именем myscript.пс1
- У меня установлены все необходимые фреймворки
- Я установил эту политику выполнения
- Я следовал инструкциям на этой странице справки MSDN
и я пытаюсь запустить его так:
powershell.exe 'C:\my_path\yada_yada\run_import_script.ps1'
(с или без--noexit
)
, который ничего не возвращает, кроме того, что выводится имя файла.
Нет ошибок, нет сообщений, ничего. О, когда я добавляю -noexit
, происходит то же самое, но я остаюсь в PowerShell и должен выйти вручную.
Предполагается, что файл .ps1 запускает программу и возвращает уровень ошибки, зависящий от вывода этой программы. Но я совершенно уверен, что еще даже не доберусь туда.
Что я делаю не так?
Питер Мортенсен29.4k2121 золотой знак9797 серебряный знак124124 бронзовый знак
Создан 09 янв.
ПеккаПекка426k132132 золотых знака954954 серебряных знака10671067 бронзовых знаков
1- Запустите Windows PowerShell и немного подождите, пока не появится командная строка
PS
-
Перейдите в каталог, где находится скрипт
PS> cd C:\my_path\yada_yada\ (введите)
-
Выполнить скрипт:
PS> .\run_import_script.ps1 (введите)
Что я упускаю??
Или: вы можете запустить сценарий PowerShell из cmd.exe
следующим образом:
powershell -noexit "& ""C:\my_path\yada_yada\run_import_script.ps1""" (введите)
согласно этому сообщению в блоге здесь
Или вы даже можете запустить свой сценарий PowerShell из своего приложения C# 🙂
Асинхронно выполнять сценарии PowerShell из вашего приложения C#
Питер Мортенсен29.4k2121 золотой знак9797 серебряных знаков124124 бронзовых знака
ответ дан 09 янв.
marc_smarc_s695k163163 золотых знака12871287 серебряных знаков14131413 бронзовых знаков
11 Если вы используете PowerShell 2.0 используйте параметр PowerShell.exe -File
, чтобы вызвать сценарий из другой среды, например cmd.exe. Например:
Powershell.exe — файл C:\my_path\yada_yada\run_import_script.ps1
Питер Мортенсен
29.4k2121 золотой знак9797 серебряный знак124124 бронзовый знак
ответ дан 09 янв.
Кит ХиллКит Хилл181k3737 золотых знаков326326 серебряных знаков357357 бронзовых знаков
5Если вы хотите запустить сценарий без изменения политики выполнения сценария по умолчанию, вы можете использовать переключатель обхода при запуске Windows PowerShell .
powershell [-noexit] -executionpolicy bypass -File <имя файла>
ответ дан 30 янв.
Чингиз МусаевЧингиз Мусаев2,73411 золотой знак1212 серебряных знаков66 бронзовых знаков
1Тип:
powershell-executionpolicy bypass-File .\Test.ps1
ПРИМЕЧАНИЕ. Здесь Test.ps1
— это сценарий PowerShell.
9,2141111 золотых знаков5959 серебряных знаков104104 бронзовых знака
ответ дан 05 фев.
СудхишСудхиш1,02111 золотой знак77 серебряных знаков22 бронзовых знака
1У меня была такая же проблема, и я пытался и пытался… Наконец я использовал:
powershell.exe -noexit "& 'c:\Data\ScheduledScripts\ShutdownVM.ps1'"
И поместите эту строку в пакетный файл, и это сработает.
Питер Мортенсен29.4k2121 золотой знак9797 серебряный знак124124 бронзовый знак
ответ дан 08 март 2010, в 13:47
ДеннисДеннис1,75011 золотой знак1919 серебряных знаков4141 бронзовый знак
Если у вас есть только PowerShell 1.0 , это, похоже, достаточно хорошо работает:
powershell -команда - < c:\mypath\myscript.ps1
Он передает файл сценария в командную строку PowerShell.
Питер Мортенсен29.4k2121 золотой знак9797 серебряный знак124124 бронзовый знак
ответ дан 01 июль 2010, в 9:32
ЭндиМэндиМ3,41455 золотых знаков3838 серебряных знаков4444 бронзовых знака
1Довольно просто.Щелкните правой кнопкой мыши файл .ps1 в Windows и в меню оболочки выберите Run with PowerShell .
Питер Мортенсен29.4k2121 золотой знак9797 серебряный знак124124 бронзовый знак
ответ дан 23 авг.
1Использование файла cmd (BAT):
@эхо выключено
цвет 1F
эхо.C:\Windows\system32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy Bypass -File "PrepareEnvironment.ps1"
:ЭОФ
эхо Секунды ожидания
тайм-аут /t 10 /без перерыва > NUL
Если вам нужно запустите от имени администратора :
- Сделайте ярлык, указывающий на командную строку (я назвал его Административная командная строка)
- Откройте свойства ярлыка и перейдите на вкладку «Совместимость»
- Убедитесь, что в разделе «Уровень привилегий» установлен флажок «Выполнять эту программу от имени администратора».
ответ дан 17 ноя.
КикенетКикенет13.7k3333 золотых знака138138 серебряных знаков234234 бронзовых знака
Если ваш скрипт имеет расширение .ps1
и вы находитесь в окне PowerShell, просто запустите ./myscript.ps1
(при условии, что файл находится в вашем рабочем каталоге).
В любом случае это верно для меня в Windows 10 с PowerShell версии 5.1 в любом случае, и я не думаю, что сделал что-то, чтобы это стало возможным.
Питер Мортенсен29.4k2121 золотой знак9797 серебряный знак124124 бронзовый знак
ответ дан 06 сен.
райнббарайнбба3 2993131 серебряный знак3232 бронзовых знака
3Простой способ — использовать PowerShell ISE, открыть скрипт, запустить и вызвать скрипт, функцию...
Питер Мортенсен
29.4k2121 золотой знак9797 серебряный знак124124 бронзовый знак
ответ дан 01 ноя.
0У меня есть очень простой ответ, который работает:
- Откройте PowerShell в режиме администратора
- Выполнить:
set-executionpolicy неограниченно
- Откройте обычное окно PowerShell и запустите сценарий.
Я нашел это решение по ссылке, указанной в сообщении об ошибке: О политиках выполнения
Изменить: обязательно запустите set-ExecutionPolicy default
, как только вы закончите, иначе вы будете подвержены рискам безопасности (спасибо, анонимный пользователь).
ответ дан 17 сен.
Джован ТороманДжован Тороман44544 серебряных знака1515 бронзовых знаков
1-
Укажите путь скрипта, то есть установка пути по cmd:
$> .c:\program file\prog.ps1
-
Запустите функцию точки входа PowerShell:
Например,
$> add или entry_func или main
29.4k2121 золотой знак9797 серебряный знак124124 бронзовый знак
ответ дан 16 июн.
пкмпкм2,56311 золотой знак2424 серебряных знака4242 бронзовых знака
1Вы можете запустить из cmd так:
введите "script_path" | силовая оболочка.exe-с-
ответ дан 23 авг.
программист365программист36513.2k33 золотых знака99 серебряных знаков2929 бронзовых знаков
Используйте параметр -File
перед именем файла.Кавычки заставляют PowerShell думать, что это строка команд.
29.4k2121 золотой знак9797 серебряный знак124124 бронзовый знак
ответ дан 01 авг.
ИнженерИнженер71411 золотой знак1111 серебряных знаков2424 бронзовых знака
1При соответствующей политике выполнения вы должны иметь возможность напрямую вызывать файл, и Windows свяжет его с PowerShell
C:\my_path\yada_yada\run_import_script.пс1
Это не очень хорошо работает с аргументами. Реальный ответ на ваш вопрос заключается в том, что вам не хватает и
, чтобы сказать «выполнить это»
powershell.exe '& C:\my_path\yada_yada\run_import_script.ps1'
ответил 6 янв в 3:03
каррвокаррво36722 серебряных знака1010 бронзовых знаков
- Открытая оболочка Power
- Переместите папку, в которой находится файл .ps1 файл доступен бывший. cd c:\users<имя_пользователя>\
- Теперь введите имя файла powershell ex.testfile.ps1
- Нажмите Enter
Это должно выполнить ваш простой скрипт powershell.
ответил 10 янв в 10:52
1 Очень активный вопрос .Заработайте 10 репутации (не считая бонуса ассоциации), чтобы ответить на этот вопрос. Требование к репутации помогает защитить этот вопрос от спама и отсутствия ответа.по умолчанию
Stack Overflow лучше всего работает с включенным JavaScriptВаша конфиденциальность
Нажимая «Принять все файлы cookie», вы соглашаетесь с тем, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой использования файлов cookie.
Принять все файлы cookie Настроить параметры
о работе с PowerShell - PowerShell
- Статья
- 2 минуты на чтение
Пожалуйста, оцените свой опыт
да Нет
Любая дополнительная обратная связь?
Отзыв будет отправлен в Microsoft: при нажатии кнопки отправки ваш отзыв будет использован для улучшения продуктов и услуг Microsoft.Политика конфиденциальности.
Представлять на рассмотрение
Спасибо.
В этой статье
Краткое описание
Объясняет, как использовать функцию «Запуск с PowerShell» для запуска сценария из диск с файловой системой.
Подробное описание
Начиная с Windows PowerShell 3.0, вы можете использовать функцию «Запуск с PowerShell». функция для запуска сценариев из проводника в Windows 8 и Windows Server 2012 и из проводника Windows в более ранних версиях Windows.
Функция «Запуск с PowerShell» предназначена для запуска сценариев, не имеющих необходимые параметры и не возвращать вывод в командную строку.
При использовании функции «Запуск с PowerShell» консоль PowerShell окно появляется только на короткое время, если вообще появляется. Вы не можете взаимодействовать с ним.
Чтобы использовать функцию «Запуск с PowerShell»:
В проводнике (или проводнике Windows) щелкните правой кнопкой мыши имя файла сценария и затем выберите «Запустить с PowerShell».
Функция «Запуск с PowerShell» запускает сеанс PowerShell, политику выполнения Bypass, запускает сценарий и закрывает сеанс.
Выполняет команду следующего формата:
PowerShell.exe-File -ExecutionPolicy Bypass
«Запуск с PowerShell» устанавливает политику обхода выполнения только для сеанса. (текущий экземпляр процесса PowerShell), в котором выполняется скрипт. Эта функция не изменяет политику выполнения для компьютера или Пользователь.
На функцию «Запуск с PowerShell» влияет только выполнение AllSigned политика. Если политика выполнения AllSigned эффективна для компьютера или user, «Запустить с PowerShell» запускает только подписанные сценарии.«Запуск с PowerShell» — это не зависит от какой-либо другой политики выполнения. Для получения дополнительной информации см. about_Execution_Policies.
Примечание об устранении неполадок. Команда «Выполнить с помощью PowerShell» может запросить подтверждение изменение политики выполнения.
См. также
about_Execution_Policies
about_Group_Policy_Settings
about_Scripts
о скриптах - PowerShell | Документы Майкрософт
- Статья
- 10 минут на чтение
Пожалуйста, оцените свой опыт
да Нет
Любая дополнительная обратная связь?
Отзыв будет отправлен в Microsoft: при нажатии кнопки отправки ваш отзыв будет использован для улучшения продуктов и услуг Microsoft.Политика конфиденциальности.
Представлять на рассмотрение
Спасибо.
В этой статье
Краткое описание
Описывает, как запускать и писать сценарии в PowerShell.
Подробное описание
Сценарий — это обычный текстовый файл, содержащий одну или несколько команд PowerShell.
Сценарии PowerShell имеют расширение файла .ps1
.
Запуск сценария очень похож на запуск командлета. Вы вводите путь и файл имя сценария и использовать параметры для отправки данных и установки параметров. Ты сможешь запускать сценарии на своем компьютере или в удаленном сеансе на другом компьютере.
При написании сценария команда сохраняется для последующего использования и упрощается совместное использование другие. Самое главное, он позволяет вам запускать команды, просто набрав путь сценария и имя файла. Скрипты могут быть такими же простыми, как одна команда в файл или столь обширный, как сложная программа.
Скрипты имеют дополнительные функции, такие как специальный комментарий #Requires
,
использование параметров, поддержка разделов данных и цифровая подпись для обеспечения безопасности.
Вы также можете создавать разделы справки для сценариев и для любых функций в сценарии.
Как запустить скрипт
Прежде чем запускать сценарий в Windows, необходимо изменить значение по умолчанию. Политика выполнения PowerShell. Политика выполнения не применяется к PowerShell работает на платформах, отличных от Windows.
Политика выполнения по умолчанию, Restricted
, запрещает выполнение всех сценариев,
включая сценарии, которые вы пишете на локальном компьютере.Чтобы получить больше информации,
см. about_Execution_Policies.
Политика выполнения сохранена в реестре, поэтому менять нужно только ее один раз на каждом компьютере.
Чтобы изменить политику выполнения, используйте следующую процедуру.
В командной строке введите:
Set-ExecutionPolicy AllSigned
или
Set-ExecutionPolicy RemoteSigned
Изменение вступает в силу немедленно.
Чтобы запустить сценарий, введите полное имя и полный путь к файлу сценария.
Например, чтобы запустить сценарий Get-ServiceLog.ps1 в каталоге C:\Scripts, тип:
C:\Scripts\Get-ServiceLog.ps1
Чтобы запустить скрипт в текущем каталоге, введите путь к текущему
каталог или используйте точку для представления текущего каталога, за которым следует путь
обратная косая черта ( .\
).
Например, чтобы запустить сценарий ServicesLog.ps1 в локальном каталоге, введите:
.\Get-ServiceLog.ps1
Если сценарий имеет параметры, введите параметры и значения параметров после имя файла скрипта.
Например, следующая команда использует параметр ServiceName Сценарий Get-ServiceLog для запроса журнала активности службы WinRM.
.\Get-ServiceLog.ps1 -ServiceName WinRM
В целях безопасности PowerShell не запускает сценарии при двойном щелчке значок сценария в проводнике или при вводе имени сценария без полный путь, даже если скрипт находится в текущем каталоге. Для большего информацию о выполнении команд и сценариев в PowerShell см. about_Command_Precedence.
Запуск с помощью PowerShell
Начиная с PowerShell 3.0, вы можете запускать сценарии из Проводника.
Чтобы использовать функцию «Запуск с PowerShell»:
Запустите проводник, щелкните правой кнопкой мыши имя файла сценария и выберите «Выполнить с PowerShell».
Функция «Запуск с PowerShell» предназначена для запуска сценариев, не имеющих необходимые параметры и не возвращать вывод в командную строку.
Дополнительные сведения см. в разделе about_Run_With_PowerShell.
Запуск сценариев на других компьютерах
Чтобы запустить сценарий на одном или нескольких удаленных компьютерах, используйте параметр FilePath
командлет Invoke-Command
.
Введите путь и имя файла скрипта в качестве значения FilePath параметр. Сценарий должен находиться на локальном компьютере или в каталоге, локальный компьютер может получить доступ.
Следующая команда запускает сценарий Get-ServiceLog.ps1
на удаленном
компьютеры с именами Server01 и Server02.
Invoke-Command -ComputerName Server01,Server02 -FilePath `
C:\Scripts\Get-ServiceLog.ps1
Получить справку по сценариям
Командлет Get-Help получает разделы справки для сценариев, а также для командлетов.
и другие типы команд. Чтобы получить раздел справки для скрипта, введите
Get-Help
, за которым следует путь и имя файла сценария. Если сценарий
path находится в вашей переменной среды Path
, вы можете опустить путь.
Например, чтобы получить справку по журналу служб.скрипт ps1, тип:
получить помощь C:\admin\scripts\ServicesLog.ps1
Как написать скрипт
Сценарий может содержать любые допустимые команды PowerShell, включая отдельные команды, команды, использующие конвейер, функции и структуры управления, такие как If операторы и циклы For.
Чтобы написать сценарий, откройте новый файл в текстовом редакторе, введите команды и
сохраните их в файл с допустимым именем файла с расширением .ps1
.
Следующий пример представляет собой простой сценарий, который получает службы, работающие в текущей системе, и сохраняет их в файл журнала.Имя файла журнала создан с текущей даты.
$date = (get-date).dayofyear
получить-сервис | выходной файл "$date.log"
Чтобы создать этот сценарий, откройте текстовый редактор или редактор сценариев, введите эти
команды, а затем сохраните их в файле с именем ServiceLog.ps1
.
Параметры в сценариях
Чтобы определить параметры в скрипте, используйте оператор Param. Оператор Param
должен быть первым оператором в скрипте, за исключением комментариев и любых
# Требуется
операторов.
Параметры скрипта работают как параметры функции. Значения параметров доступны для всех команд в сценарии. Все особенности параметры функции, включая атрибут Parameter и его именованный аргументы также допустимы в сценариях.
При запуске скрипта пользователи скрипта вводят параметры после скрипта название.
В следующем примере показан сценарий Test-Remote.ps1
с
Имя_компьютера параметр. Обе функции сценария могут получить доступ к
Имя_компьютера Значение параметра .
param ($ComputerName = $(throw "Требуется параметр ComputerName."))
функция CanPing {
$ошибка.очистить()
$tmp = тестовое соединение $computername -erroraction SilentlyContinue
если (!$?)
{write-host "Ошибка проверки связи: $ComputerName."; вернуть $ложь}
еще
{write-host "Пинг успешно выполнен: $ComputerName"; вернуть $true}
}
функция CanRemote {
$s = new-pssession $computername -erroraction SilentlyContinue
if ($s -is [System.Management.Automation.Runspaces.PSSession])
{write-host "Удаленная проверка прошла успешно: $ComputerName."}
еще
{write-host "Удаленная проверка не удалась: $ComputerName."}
}
if (CanPing $computername) {CanRemote $computername}
Чтобы запустить этот сценарий, введите имя параметра после имени сценария. Например:
C:\PS> .\test-remote.ps1 -имя_компьютера Server01
Пинг успешно выполнен: Server01
Ошибка удаленного тестирования: Server01
Дополнительные сведения об операторе Param и параметрах функции см. about_Functions и about_Functions_Advanced_Parameters.
Справка по написанию скриптов
Вы можете написать раздел справки для сценария, используя один из двух следующих способов: методы:
-
Справка по сценариям на основе комментариев
Создайте раздел справки, используя специальные ключевые слова в комментариях. Создавать Справка по скрипту на основе комментариев, комментарии должны располагаться в начале или конец файла сценария. Дополнительные сведения о справке на основе комментариев см. about_Comment_Based_Help.
-
XML-справка для сценариев
Создайте раздел справки на основе XML, например тип, который обычно создается для командлетов.Справка на основе XML требуется, если вы переводите разделы справки на несколько языков.
Чтобы связать сценарий с разделом справки на основе XML, используйте .ExternalHelp Помогите комментировать ключевое слово. Дополнительные сведения о ключевом слове ExternalHelp см. about_Comment_Based_Help. Чтобы получить больше информации о справке на основе XML см. Как написать справку по командлету.
Возврат выходного значения
По умолчанию сценарии не возвращают статус выхода после завершения сценария. Ты должен
используйте оператор exit
, чтобы вернуть код выхода из скрипта.По умолчанию
Оператор exit
возвращает 0
. Вы можете указать числовое значение, чтобы вернуть
другой статус выхода. Ненулевой код выхода обычно сигнализирует об ошибке.
В Windows любое число от [int]::MinValue
до [int]::MaxValue
является
позволил.
В Unix разрешены только положительные числа между [byte]::MinValue
(0) и
[byte]::MaxValue
(255) разрешены. Отрицательное число в диапазоне от до 1
.
через -255
автоматически преобразуется в положительное число путем добавления
256.Например, -2
преобразуется в 254
.
В PowerShell инструкция exit
задает значение $LASTEXITCODE
.
Переменная. В командной оболочке Windows (cmd.exe) оператор выхода задает
значение переменной среды %ERRORLEVEL%
.
Любой аргумент, который не является числовым или находится за пределами диапазона, зависящего от платформы,
переводится в значение 0
.
Область действия скрипта и источник точек
Каждый сценарий выполняется в своей области.Функции, переменные, псевдонимы и диски, созданные в сценарии, существуют только в области действия сценария. Ты не может получить доступ к этим элементам или их значениям в той области, в которой скрипт бежит.
Чтобы запустить сценарий в другой области, вы можете указать область, например глобальную. или Local, или вы можете указать источник сценария.
Функция поиска точек позволяет запускать сценарий в текущей области вместо в области скрипта. Когда вы запускаете сценарий с точечным источником, команды в сценарий запускается так, как если бы вы ввели их в командной строке.То функции, переменные, псевдонимы и диски, которые создает скрипт, создаются в той сфере, в которой вы работаете. После запуска скрипта вы можете использовать созданные элементы и доступ к их значениям в вашем сеансе.
Чтобы указать источник сценария, введите точку (.) и пробел перед путем к сценарию.
Например:
. C:\scripts\UtilityFunctions.ps1
или
. .\UtilityFunctions.ps1
После UtilityFunctions.запускается скрипт ps1
, функции и переменные, которые
создаваемые сценарии добавляются в текущую область.
Например, сценарий UtilityFunctions.ps1
создает New-Profile
функция и переменная $ProfileName
.
# В UtilityFunctions.ps1
функция Новый-Профиль
{
Write-Host "Запуск функции New-Profile"
$profileName = разделенный путь $profile -leaf
если (тестовый путь $профиль)
{write-error "Профиль $profileName уже существует на этом компьютере."}
еще
{новый элемент -тип файла -путь $профиль -сила}
}
Если запустить сценарий UtilityFunctions.ps1
в его собственной области действия сценария,
Функция New-Profile
и переменная $ProfileName
существуют только тогда, когда
скрипт работает. Когда сценарий завершается, функция и переменная
удалены, как показано в следующем примере.
C:\PS> .\UtilityFunctions.ps1
C:\PS> Новый профиль
Термин «новый профиль» не распознается как командлет, функция, работающая
программа или файл сценария.Проверьте термин и повторите попытку.
В строке:1 символ:12
+ новый профиль <<<<
+ Информация о категории: ObjectNotFound: (новый профиль: строка) [],
+ FullyQualifiedErrorId : CommandNotFoundException
C:\PS> $имя_профиля
C:\PS>
Когда вы создаете сценарий и запускаете его, сценарий создает New-Profile
функция и переменная $ProfileName
в вашем сеансе в вашей области. После
сценарий запускается, вы можете использовать функцию New-Profile
в своем сеансе, как
показано в следующем примере.
C:\PS> . .\UtilityFunctions.ps1
C:\PS> Новый профиль
Каталог: C:\Users\juneb\Documents\WindowsPowerShell
Режим LastWriteTime Длина Имя
---- ------------- ------ ----
-a--- 14.01.2009 15:08 0 Microsoft.PowerShellISE_profile.ps1
C:\PS> $имя_профиля
Microsoft.PowerShellISE_profile.ps1
Дополнительные сведения об области см. в разделе about_Scopes.
Скрипты в модулях
Модуль — это набор связанных ресурсов PowerShell, которые можно распространять как Блок.Вы можете использовать модули для организации ваших скриптов, функций и прочего. Ресурсы. Вы также можете использовать модули для распространения своего кода среди других и для получить код из надежных источников.
Вы можете включать скрипты в свои модули, или вы можете создать модуль скрипта, который представляет собой модуль, который полностью или в основном состоит из скрипта и вспомогательные ресурсы. Модуль сценария — это просто сценарий с файлом .psm1. расширение.
Дополнительные сведения о модулях см. в разделе about_Modules.
Другие функции скрипта
PowerShell имеет множество полезных функций, которые можно использовать в сценариях.
-
#Requires
— Вы можете использовать оператор#Requires
, чтобы предотвратить запуск скрипта. работает без указанных модулей или оснасток и с указанной версией PowerShell. Дополнительные сведения см. в разделе about_Requires. -
$PSCommandPath
— содержит полный путь и имя сценария, выполняется. Этот параметр действителен во всех сценариях. Эта автоматическая переменная представлен в PowerShell 3.0. -
$PSScriptRoot
— содержит каталог, из которого запускается сценарий.В PowerShell 2.0 эта переменная действительна только в модулях сценариев (.psm1
). Начиная с PowerShell 3.0, он действителен во всех сценариях. -
$MyInvocation
— Автоматическая переменная$MyInvocation
содержит информацию о текущем скрипте, включая информацию о том, как он был запущен или "призванный". Вы можете использовать эту переменную и ее свойства для получения информации о скрипте во время его работы. Например,$MyInvocation
.Переменная MyCommand.Path содержит путь и имя файла сценарий.$MyInvocation
.Line содержит команду, которая запустила скрипт, включая все параметры и значения.Начиная с PowerShell 3.0,
$MyInvocation
имеет два новых свойства, которые предоставить информацию о скрипте, который вызвал или вызвал текущий сценарий. Значения этих свойств заполняются только тогда, когда инициатор или caller - это скрипт.-
PSCommandPath содержит полный путь и имя сценария, который вызвал или вызвал текущий скрипт.
-
PSScriptRoot содержит каталог сценария, который вызвал или вызвал текущий сценарий.
В отличие от автоматических переменных
$PSCommandPath
и$PSScriptRoot
, которые содержать информацию о текущем скрипте, PSCommandPath и PSScriptRoot свойства переменной$MyInvocation
содержат информация о скрипте, вызвавшем текущий скрипт. -
-
Разделы данных. Вы можете использовать ключевое слово
Data
, чтобы отделить данные от логики в скрипты.Разделы данных также могут упростить локализацию. Для большего информацию см. about_Data_Sections и about_Script_Internationalization. -
Подписание сценария. Вы можете добавить к сценарию цифровую подпись. В зависимости от политики выполнения, вы можете использовать цифровые подписи, чтобы ограничить выполнение сценариев, которые могут включать небезопасные команды. Для получения дополнительной информации см. about_Execution_Policies и about_Подписание.
См. также
about_Command_Precedence
about_Comment_Based_Help
about_Execution_Policies
about_Functions
about_Modules
about_Profiles
about_Requires
about_Run_With_PowerShell
about_Scopes
about_Script_Blocks
about_Signing
Вызвать команду
Как запустить скрипт — PowerShell
Как запустить скрипт — PowerShell — SS64.комСуществует несколько способов запуска сценария PowerShell.
Прежде чем запускать какие-либо сценарии в новой установке PowerShell, необходимо сначала установить соответствующую политику выполнения,
например Set-ExecutionPolicy RemoteSigned
Если сценарий был загружен из Интернета и сохранен в виде файла, вам также может потребоваться щелкнуть сценарий правой кнопкой мыши, выбрать свойства и разблокировать. Если вы просто копируете и вставляете текст скрипта, это не нужно.
Сценарий PowerShell является эквивалентом пакетного файла Windows CMD или MS-DOS, файл должен быть сохранен как обычный текст ASCII с расширением .расширение ps1, например. MyScript.ps1
Запуск, вызов или вызов сценария PowerShell
Запустите сценарий PowerShell, расположенный в текущем каталоге, из консоли PowerShell:
PS C:\> ./Myscript.ps1
вы также можете использовать обратную косую черту:
PS C:\> .\Myscript.ps1
и параметры передачи:
PS C:\> ./Myscript.ps1 -length 123Причина, по которой требуется косая черта, заключается в том, что текущий каталог вряд ли будет находиться в системном PATH, поэтому в целях безопасности PowerShell будет настаивать на том, чтобы вы указали конкретное местоположение файла, который нужно запустить, либо ссылаясь на текущий каталог ' .' или указав полный путь:
PS C:\> C:\scripts\Myscript.ps1
Если сценарий, который вы хотите запустить, использует путь с пробелами, это становится более сложным, если вы просто добавите двойные кавычки, которые будут отображаться в PowerShell как «строка», которую нужно отобразить, а не команду для выполнения:
PS C:\> "C:\мои любимые скрипты\Myscript.ps1"
"C:\мои любимые скрипты\Myscript.ps1"Чтобы дать указание PowerShell запустить этот скрипт/исполняемый файл, используйте оператор CALL:
PS C:\> & "C:\мои любимые скрипты\Myscript.пс1"
Это наиболее распространенный способ запуска сценариев PowerShell.
Вызов одного сценария PowerShell из другого сценария, сохраненного в том же каталоге:
# Требуется - Версия 3.0
& "$PSScriptRoot\set-consolesize.ps1" - высота 25 - ширина 90
Запустите сценарий PowerShell из графического интерфейса или с помощью ярлыка
Это можно сделать, запустив PowerShell.exe с параметрами для запуска нужного скрипта.
Запуск от имени администратора (с повышенными правами)
См. страницу повышения прав PowerShell, чтобы узнать, как запустить сценарий или сеанс PowerShell «От имени администратора»
Поиск источников
Точечный источник очень похож на оператор CALL, но когда вы точечный источник сценария, все переменные и функции, определенные в сценарии, будут сохраняться даже после завершения сценария.
Запустить сценарий с помощью точечного источника it:
PS C:\> ."C:\Batch\Мой первый скрипт.ps1"
Дот-сорсинг скрипта в текущем каталоге:
PS C:\> . .\Myscript.ps1"
Запустить пакетный файл CMD
Запустите пакетный файл CMD из PowerShell:
PS C:\> ./demo.cmd
вы также можете использовать обратную косую черту:
PS C:\> .\demo.cmd
и параметры передачи:
PS C:\> ./demo.cmd '123'
Причина, по которой требуется косая черта, заключается в том, что текущий каталог вряд ли будет находиться в системном PATH, поэтому в целях безопасности PowerShell будет настаивать на том, чтобы вы указали конкретное местоположение файла, который нужно запустить, либо ссылаясь на текущий каталог ' .' или указав полный путь:
PS C:\> C:\scripts\demo.cmd
Если сценарий, который вы хотите запустить, использует путь с пробелами, это становится более сложным, если вы просто добавите двойные кавычки, которые будут отображаться в PowerShell как «строка», которую нужно отобразить, а не команду для выполнения:
PS C:\> "C:\мои любимые скрипты\demo.cmd"
"C:\мои любимые скрипты\demo.cmd"Чтобы дать указание PowerShell запустить этот скрипт/исполняемый файл, используйте оператор CALL:
PS C:\> & "C:\мои любимые скрипты\demo.команда"
Ранние версии PowerShell выполняли только внутреннюю команду CMD, если пакетный файл запускался путем явного вызова оболочки CMD.exe и передачи имени пакетного файла.
Запустите одну внутреннюю команду CMD
Это запустит версию DIR CMD.exe, а не псевдоним DIR powershell для Get-ChildItem:
PS C:\> CMD.exe /C каталог
Запустить сценарий на одном или нескольких удаленных компьютерах
Используйте параметр -FilePath Invoke-Command:
Invoke-Command -ComputerName Server64,Server65 -FilePath C:\Scripts\Get-ServiceLog.пс1
Когда вы вызываете скрипт с использованием приведенного выше синтаксиса, переменные и функции, определенные в скрипте, исчезают после завершения скрипта. Если они явно не определены как глобальные: Function SCOPE:GLOBAL или Filter SCOPE:GLOBAL или Set-Variable -scope "Global"
Запустить файл VBScript
Запустить сценарий vb из PowerShell:
PS C:\> cscript c:\batch\demo.vbsили для пути с пробелами:
PS C:\> & "cscript c:\my fave scripts\demo.вбс"
Системный путь
Если вы запустите сценарий (или даже просто введете команду) без указания полного пути, PowerShell будет искать его следующим образом:
- Текущие псевдонимы
- Текущие определенные функции
- Команды, расположенные в системном пути.
#Да, я побегу к тебе, потому что, когда я почувствую себя хорошо, я останусь на всю ночь, я побегу к тебе# ~ Брайан Адамс
Связанные командлеты PowerShell:
#requires — Предотвратить запуск скрипта без обязательного элемента.
Базовый шаблон сценария PowerShell — HowTo.
Invoke-Command — запускать команды на локальных и удаленных компьютерах.
Invoke-Expression — запуск выражения PowerShell.
Invoke-Item — вызвать исполняемый файл или открыть файл (СТАРТ).
Оператор вызова (&) - Выполнить команду, скрипт или функцию.
Set-Variable — установка переменной и ее значения.
Функции - Напишите именованный блок кода.
PowerShell.exe — запуск PowerShell.
CMD-оболочка:
Запустите сценарий PowerShell из оболочки CMD.
VB-скрипт:
Запустить скрипт из VBScript
Copyright © 1999-2022 SS64.com
Некоторые права защищены
Как запустить сценарий PowerShell
СценарииPowerShell — отличный способ автоматизировать задачи, собирать информацию или массово изменять свойства. Большинство команд PowerShell — это всего лишь одна строка, которую можно просто скопировать и вставить в PowerShell. Но как запустить полный сценарий PowerShell?
Существует несколько вариантов запуска сценариев PowerShell: просто из командной строки, с помощью PowerShell ISE или даже запланированного задания.
В этой статье я объясню различные варианты запуска сценария PowerShell. Кроме того, я помогу вам с распространенными ошибками, такими как «запуск скриптов отключен в этой системе».
Исправление запущенных сценариев отключено в этой системе
Мы собираемся начать с распространенной ошибки, которая не позволяет большинству пользователей запускать сценарий PowerShell, с ошибки «Выполнение сценариев отключено в этой системе». Эта ошибка вызвана политикой выполнения PowerShell.
По умолчанию для политики выполнения PowerShell установлено значение Restricted .Это означает, что сценарии PowerShell вообще не будут выполняться.
Итак, чтобы запустить сценарий PowerShell, нам сначала нужно изменить политику выполнения. Для полиса у нас есть пара вариантов:
Выполнение Политика | Описание |
---|---|
3 | Опция по умолчанию - не позволяет запустить любой сценарий PowerShell |
Неограничен | может запустить любой скрипт, показывает предупреждение для загруженных скриптов |
RemoteSigned | Требуется цифровая подпись для загружаемых сценариев.Вы можете запускать локально написанные сценарии. Вы можете разблокировать скачащие скрипты , чтобы запустить их без подписи |
9103 | Вы можете запустить все сценарии и предупреждения отображаются |
9103 Allsigned | Вы можете запустить только подписанные скрипты из доверенных издателей |
Политики выполнения разработаны не как модель безопасности, а в большей степени для предотвращения случайного выполнения сценария PowerShell.Оптимальный вариант — использовать политику RemoteSigned , так вы не сможете случайно запустить загруженный скрипт (предварительно его придется разблокировать).
Чтобы изменить политику выполнения в PowerShell (и исправить «Выполнение сценариев отключено в этой системе»), нам нужно запустить PowerShell с правами администратора:
- Нажмите клавишу Windows + X (или щелкните правой кнопкой мыши в меню «Пуск»)
- Выберите Windows PowerShell (admin)
- Запустите команду ниже :
RemoteSecutionPolicyТеперь вы сможете запускать сценарии PowerShell.
Запустить сценарий PowerShell
Существует несколько вариантов запуска сценария PowerShell. Самый удобный способ — просто щелкнуть файл правой кнопкой мыши и выбрать Run with PowerShell .
Запустите сценарий PowerShell. Но у этого метода есть и обратная сторона. По умолчанию большинство сценариев PowerShell автоматически закрывают окно PowerShell после выполнения сценария. Таким образом, скрипт выполняется, но вы не сможете прочитать какие-либо ошибки или вывод.
Вы можете решить эту проблему, добавив следующую строку в конец скрипта PowerShell, но это не всегда удобно:
Read-Host -Prompt «Нажмите Enter для выхода»Используйте Windows PowerShell
Лично я предпочитаю запускать сценарии PowerShell из командной строки в самой Windows PowerShell.Это можно сделать двумя способами: сначала запустить PowerShell и перейти к сценарию, либо открыть PowerShell в нужном месте из проводника.
Начнем с последнего, открыв PowerShell в нужном месте из проводника. В проводнике найдите сценарий, который вы хотите запустить, в данном случае это c:\temp\powershell.
- Щелкните правой кнопкой мыши в пустой области проводника (не в файле PowerShell)
- Выберите Открыть окно PowerShell здесь
(В Windows 11 вам нужно будет выбрать Открыть в терминале Windows)Как вы можете видите, PowerShell запускается в папке c:\temp\PowerShell.Теперь мы можем запустить скрипт, просто введя имя файла (введите первые несколько букв и нажмите Tab для автозаполнения)
Вы также можете сначала запустить Windows PowerShell:
- Щелкните правой кнопкой мыши в меню «Пуск» (или нажмите клавишу Windows + X )
- Выберите Windows PowerShell
- Перейдите в папку, в которой находится скрипт
cd c:\path\to\script
- Запустить сценарий PowerShell
.\PowerShellExampleScript.ps1
Запустить сценарий PowerShell из CMD
Если вы пытались запустить PowerShell из cmd, то могли заметить, что он просто открывает скрипт в блокноте. Не совсем тот результат, который мы ищем.
Чтобы запустить сценарий PowerShell, нам нужно указать командной строке открыть сценарий с помощью PowerShell. Для этого мы можем использовать следующую команду:
PowerShell c:\path\to\script\PowerShellScript.ps1Обратите внимание, что вам нужно будет указать полный путь к скрипту PowerShell.Результат работы скрипта отображается в командной строке.
Если вы хотите, чтобы сеанс PowerShell оставался открытым, вы можете добавить в команду параметр
-noexit
:PowerShell -noexit c:\temp\PowerShell\PowerShellExampleScript.ps1Использование PowerShell ISE
Когда вы загружаете сценарий из Интернета, всегда полезно просмотреть сценарий перед его запуском. Простой способ просмотреть и запустить сценарий PowerShell — использовать PowerShell ISE.
Чтобы открыть файл PowerShell в редакторе, просто щелкните его правой кнопкой мыши и выберите Изменить
При первом использовании редактора может потребоваться сначала развернуть панель сценария, чтобы увидеть содержимое сценария PowerShell:
Чтобы запустить скрипт в PowerShell ISE, просто нажмите зеленую кнопку воспроизведения на панели инструментов. Результаты работы скриптов выводятся в консоль:
Запуск сценария PowerShell от имени администратора
Для правильной работы некоторых сценариев PowerShell требуются права администратора.Им может потребоваться доступ ко всем папкам на вашем системном диске или взаимодействие с другими компьютерами или серверами домена.
Самый простой способ запустить сценарии PowerShell от имени администратора — запустить Windows PowerShell от имени администратора.
- Нажмите Клавиша Windows + X (или щелкните правой кнопкой мыши меню «Пуск»)
- Выберите Windows PowerShell (admin)
- Нажмите Да в строке безопасности учетной записи пользователя
Теперь вы можете запустить любую PowerShell. или скрипт с правами администратора.Просто перейдите к сценарию (или даже перетащите его), чтобы запустить его.
Вы также можете запустить сценарий PowerShell от имени администратора из командной строки. Когда у вас открыт PowerShell, мы можем запустить новый процесс PowerShell и запустить его от имени администратора. При желании мы можем даже указать файл, который мы хотим запустить:
# Откройте новые окна PowerShell с правами администратора Start-Process PowerShell — Глагол runAs # Запустить скрипт PowerShell с правами администратора Start-Process PowerShell -Глагол runAs -ArgumentList "-file c:\temp\powershell\powershellexamplescript.пс1"Подведение итогов
Надеюсь, вы смогли запустить свой сценарий PowerShell, выполнив описанные выше действия. Перед запуском сценария PowerShell убедитесь, что вы правильно установили политику выполнения.
Если у вас есть какие-либо вопросы, просто оставьте комментарий ниже. Убедитесь, что вы также прочитали больше о настройке своего профиля PowerShell.
Как запустить скрипт PowerShell на удаленном компьютере? – TheITBros
Вы можете использовать PowerShell Remoting (появившийся в PowerShell 2.0) для запуска команд на одном или нескольких удаленных компьютерах.PS Remoting основан на протоколе веб-служб для управления (WS-Management). Вы можете использовать режим интерактивного сеанса удаленного взаимодействия PS, временное или постоянное подключение к удаленному компьютеру. В этой статье мы рассмотрим несколько примеров удаленного выполнения скрипта PowerShell.
Настройка WinRM для удаленного взаимодействия PowerShell
Для удаленного подключения к компьютеру через PowerShell на удаленном клиентском устройстве должна быть включена и настроена служба WinRM (служба удаленного управления Windows) (по умолчанию она отключена).Связь между компьютерами осуществляется по протоколам HTTP или HTTPS, а весь сетевой трафик между компьютерами шифруется. Вы можете использовать NTLM и Kerberos для аутентификации на удаленном компьютере.
Чтобы проверить состояние службы WinRM, выполните команду Get-service:
get-service winrm
Как видите, служба WS-Management запущена.
Если служба WinRM не запущена, ее необходимо включить на удаленном компьютере с помощью команды:
Enable-PSRemotingЭта команда подготавливает компьютер к удаленному управлению: запускает службу WinRM, изменяет тип запуска на автоматический и добавляет необходимые исключения в брандмауэр Защитника Windows.
Подсказка . PowerShell Remoting использует TCP-порты HTTP (5985) и HTTPS (5986) для сетевого взаимодействия. Если на удаленном компьютере включен брандмауэр Защитника Windows в режиме повышенной безопасности, необходимо включить Правила удаленного управления Windows (HTTP-In) :
-
WINRM-HTTP-In-TCP
-
WINRM-HTTP-In-TCP-NoScope
Вы можете включить правила Защитника Windows из графической консоли или с помощью PowerShell:
Set-NetFirewallRule -Name "WINRM-HTTP-In-TCP" -RemoteAddress Любой Set-NetFirewallRule -Name "WINRM-HTTP-In-TCP-NoScope" -RemoteAddress Любой
Если удаленный компьютер находится в рабочей группе (не присоединен к домену Active Directory) и применяется общедоступный сетевой профиль к нему (вместо Domain или Private) необходимо явно разрешить входящий трафик WinRM в брандмауэре Windows:
Set-NetFirewallRule -Name "WINRM-HTTP-In-TCP-PUBLIC" -RemoteAddress Любой
Для проверки подключения к удаленный сервер через WinRM используйте следующую команду:
Test-WSMan server1
Если вы получили ответ, то удаленный компьютер доступен через PowerShell Remoting.
Подсказка . Если вы подключаетесь к удаленному компьютеру через PS Remoting по IP-адресу, вы можете получить сообщение об ошибке:
Не удалось подключиться к удаленному серверу 192.168.1.70 со следующим сообщением об ошибке: Клиент WinRM не может обработать запрос. Аутентификация по умолчанию может использоваться с IP-адресом при следующих условиях: транспорт — HTTPS или пункт назначения находится в списке TrustedHosts, и предоставлены явные учетные данные.
В этом случае необходимо установить HTTPS-сертификат для PowerShell Remoting на удаленном компьютере (длинный путь) или добавить этот хост в доверенные на управляющем компьютере:
Set-Item wsman:\localhost\Client \TrustedHosts - значение 192.168.1.70Затем перезапустите службу WinRM:
Restart-Service WinRM
Запуск удаленных команд с удаленным взаимодействием PowerShell
Enter-PSSession Server1
Представление интерфейса командной строки PowerShell изменится. В начале строки будет имя удаленного компьютера, к которому вы подключены через WinRM. После установления удаленного сеанса все команды, которые вводятся в консоли PowerShell, выполняются на удаленном компьютере.PS Remoting работает следующим образом: команды, введенные на локальном компьютере, передаются на удаленный компьютер и выполняются там, затем результат передается обратно. Поскольку все команды выполняются локально, о совместимости с версией и модулями PoSh можно не беспокоиться.
Чтобы завершить удаленный интерактивный сеанс, выполните команду:
Exit-PSSession
На удаленных компьютерах в интерактивном режиме обычно выполняются только простые задачи управления.Чтобы выполнить сложную команду или запустить сценарий PowerShell удаленно, используйте командлет Invoke-Command.
Использование Invoke-Command для удаленного запуска сценариев PowerShell
Следующая команда создаст удаленное соединение с компьютером Server1 и запустит блок команд, указанный в параметре ScriptBlock. После этого удаленный сеанс автоматически закроется.
Invoke-Command -ScriptBlock {Restart-Service spooler} -ComputerName server1
Если вам нужно выполнить несколько последовательных команд PowerShell на удаленном компьютере, разделите команды в ScriptBlock точкой с запятой:
Invoke-Command -ScriptBlock {Restart- Служба диспетчера очереди; Get-Date; wmic qfe list} -ComputerName server1
Вы можете запустить задачу в фоновом режиме, запустив Invoke-Command с параметром -AsJob.Но в этом случае команда не вернет результат в консоль PoSh. Чтобы получить подробную информацию о фоновом задании, используйте командлет Receive-Job.
PowerShell позволяет запускать локальные сценарии PS1 на удаленных компьютерах. Идея состоит в том, что вы храните все инструкции PowerShell в локальном файле .PS1 на вашем компьютере. С помощью PowerShell Remoting вы можете передать файл PS1 на удаленный компьютер и выполнить его там.
Для этого используйте параметр -FilePath в командлете Invoke-Command вместо -ScriptBlock.Например, для запуска сценария c:\ps\tune.ps1 на трех удаленных серверах можно использовать следующую команду:
Invoke-Command -FilePath c:\ps\tune.ps1 -ComputerName server1,server2,server3
Файл сценария PowerShell можно поместить на локальный диск или в общую сетевую папку. В этом случае для запуска файла сценария PS1 необходимо указать полный UNC-путь:
Invoke-Command -FilePath "\\dc03\Share\pstune.ps1" -ComputerName PCS12dd2
Основное преимущество этого пути Запуск сценариев PowerShell заключается в том, что вам не нужно копировать файл сценария PS1 на удаленные компьютеры.Вы можете использовать не только локальный скрипт, но и скрипт PS в общей сетевой папке, доступ к которой возможен с локального компьютера.
Если скрипты PowerShell не разрешены для запуска на удаленном компьютере, появится сообщение об ошибке:
Invoke-Command: файл c:\Share\pstune.ps1 не может быть загружен, поскольку в этой системе отключено выполнение скриптов. Для получения дополнительной информации см. about_Execution_Policies
Вы можете изменить параметры политики выполнения PowerShell на удаленном компьютере в соответствии с этим руководством или подписать файл сценария PowerShell сертификатом.
Если вам нужно запускать сценарии PowerShell с учетными данными, отличными от текущего пользователя, необходимо использовать параметр Credential.
Во-первых, вам нужно получить учетные данные и сохранить их в переменной:
$cred = Get-Credential
Теперь вы можете запускать сценарий PS на удаленных компьютерах с сохраненными разрешениями учетных данных:
Invoke-Command -FilePath c:\ps\tune.ps1 -ComputerName server1,server2,server3 -Credential $cred
Вы можете сохранить список компьютеров в текстовом файле и запустить сценарий PowerShell удаленно на всех компьютерах одновременно:
Invoke-command -ComputerName (получить содержимое c:\ps\servers.txt) -filepath c:\ps\tune.ps1
По умолчанию командлет Invoke-Command одновременно отправляет сценарий PS1 на 32 удаленных компьютера из списка. Если компьютеров больше 32, то PoSh проверяет статус выполнения скрипта на первых 32 компьютерах. Если сценарий завершен, команда выполняется на следующем компьютере. С помощью параметра ThrottleLimit вы можете увеличить этот лимит, но будьте осторожны, чтобы не перегрузить сеть.
При запуске командлета Invoke-Command на нескольких компьютерах можно предварительно проверить, доступен ли удаленный компьютер через WinRM.Если компьютер доступен, вы можете запустить на нем код PowerShell с помощью Invoke-Command:
$RemoteComputers= get-content c:\ps\servers.txt ForEach $RemoteComputer в $RemoteComputers) { Если (Test-WSMan -ComputerName $RemoteComputer) { Invoke-Command -ComputerName $RemoteComputer -FilePath c:\ps\tune.ps1 }
Если вы хотите передать локальные переменные сеанса в удаленный сеанс PowerShell, используйте модификатор $Using:
$name="script1.ps1"
Invoke-Command -ComputerName dc03 -Scriptblock{ write-host $using:Name }
Вы можете использовать параметр ConnectionUri в Invoke-Command, чтобы выполнить команду для серверных приложений, таких как облачные службы Exchange или Azure/AWS.Например:
$Creds = Get-Credential $параметры = @{ ConfigurationName = 'Microsoft.Exchange' ConnectionUri = 'https://lonexch2.theitbros.com/PowerShell' Учетные данные = $Creds Аутентификация = «Базовая» ScriptBlock = {Set-Mailbox BJackson -DisplayName "Брайан Джексон"} } Invoke-Command @params
Использование постоянных соединений PowerShell (сеансов)
При каждом запуске Invoke-Command создается новый сеанс с удаленным компьютером. Это требует времени и системных ресурсов.В PowerShell можно создать одну сессию и выполнять в ней все команды и скрипты.
С помощью командлета New-PSSession можно создавать постоянные сеансы PowerShell с удаленными компьютерами.
Например, давайте создадим сеансы с тремя компьютерами и сохраним их в переменной $PSSess:
Invoke-Command -FilePath c:\ps\tune.ps1 -ComputerName server1,server2,server3 $PSSess = New-PSSession -ComputerName server1, server2, server3
После установления сеанса его можно использовать для запуска команд и сценариев.Поскольку сеансы являются постоянными, вы можете получать данные из них и использовать их в других командах и сценариях.
Например, следующая команда получит список процессов на удаленных серверах и сохранит их в переменной $RemoteProcesses:
Invoke-Command -Session $PSSess {$RemoteProcesses = Get-Process}
Теперь вы можете использовать это переменная в других командах в тех же сеансах. В следующем примере мы используем командлет Where-Object для поиска процессов, использующих более 500 МБ ОЗУ):
Invoke-Command -Session $PSSess {$RemoteProcesses | где-объект {$_.Рабочий набор -GT 500000*1024}|выберите имя процесса,@{l="Рабочая память (МБ)"; e={$_.workingset / 1mb}} |sort "Рабочая память (МБ)" - по убыванию}
Постоянный удаленный сеанс PowerShell будет оставаться активным до тех пор, пока вы не закроете консоль PowerShell или принудительно не закроете или не удалите сеанс с помощью командлеты Disconnect-PSSession или Remove-PSSession соответственно.
Как видите, PowerShell предоставляет широкие возможности для запуска скриптов и команд на удаленных компьютерах.Администраторы Windows, безусловно, могут использовать PowerShell Remoting в дополнение к классическому инструменту PsExec от Sysinternals.
Мне нравится технология и разработка веб-сайтов. С 2012 года я веду несколько собственных сайтов и делюсь полезным контентом по гаджетам, администрированию ПК и продвижению сайтов.
Последние сообщения Кирилла Кардашевского (посмотреть все)Выполнение сценариев PowerShell — Поддержка
Эта процедура не поддерживается.
Статьи в области «Неподдерживаемые документы сообщества» не поддерживаются поддержкой ITRS.Эта статья была написана для версии 7.0 Монитора, она может работать как на более низкой, так и на более высокой версии, если не указано иное.
Это практическое руководство покажет вам, как выполнить сценарий powershell через агент op5.
- Работающая установка агента op5
- Рабочая установка op5 Monitor
Сначала нам нужно создать сценарий powershell или использовать существующий. В этом примере мы будем использовать простой скрипт Hello World.
Мы будем использовать скрипт
.Write-Host "Hello World!`n"
Это будет помещено в папку сценария в папке установки агента, в данном случае в: C:\Program Files\op5\NSClient++\scripts\
Сохраните сценарий как hello.пс1
Чтобы агент op5 знал о скрипте и о том, как он должен выполняться, нам нужно добавить обработчик для него в конфигурацию агента.
Откройте файл custom.ini, расположенный в папке C:\Program Files\op5\NSClient++\, и добавьте следующие строки:
[обработчики NRPE]hello=cmd /c echo scripts\hello.ps1; выход $LastExitCode | powershell.exe -noprofile -nlogo -команда -
Из-за ограничений в powershell нам не разрешено запускать этот файл без изменения политики выполнения для сценариев powershell.
В этом примере мы изменим политику на неограниченную, но это не рекомендуется для обычного использования. Дополнительные сведения о политике выполнения см. на странице http://technet.microsoft.com/library/hh847748.aspx.
Откройте приглашение powershell от имени администратора и запустите
PS C:\Windows\system32> Set-ExecutionPolicy без ограничений
Ответьте Y на вопрос.
Этот шаг необязателен, но может быть полезен, прежде чем продолжить, просто чтобы убедиться, что все работает, прежде чем изменять конфигурацию.
Войдите в op5 Monitor через консоль или SSH.
Запустите следующую команду, чтобы протестировать скрипт powershell
# /opt/plugins/check_nrpe -H 192.168.1.198 -c привет
Если все работает, вы должны получить ответ "Hello World!"
Перейти к настройке хоста в op5 Monitor и добавить новый сервис.