Как запустить файл через powershell
Как запустить скрипт 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?
1. В оболочке PowerShell , перед тем как запускать скрипт, выполнить команду, разрешающую выполнение неподписанных скриптов для текущего сеанса оболочки:
Set-ExecutionPolicy RemoteSigned -Scope Process
2. При запуске из стандартной коммандной строки использовать параметр -executionpolicy, т.е. запускать скрипт так:
powershell -executionpolicy RemoteSigned -file <имя_скрипта>
Оба способа устанавливают политику только для текущего сеанса, при этом, политика безопасности выполнения скриптов PowerShell, прописанная в реестре, не будет изменена и останется прежней. Если вы хотите поменять политику безопасности выполнения скриптов "на постоянно", то используйте такой способ:
3. Разрешить запуск навсегда : запустить оболочку PowerShell от имени "Администратора", затем выполните команду:
Set-ExecutionPolicy RemoteSigned
Однако, я бы не рекомендовал такой способ, чтобы не подвергать ваш компьютер возможным угрозам, т.к. так вы разрешаете выполнение скриптов всем и всегда.
Примечание: Если скрипт был загружен из интернета, то чтобы избежать запроса на подтверждение запуска, нужно вместо RemoteSigned использовать Bypass - полное отключение любых запросов и предупреждений.
Как запустить скрипт PowerShell в фоновом режиме?
Для этого достаточно использовать параметр запуска -WindowStyle, который может принимать значения: Normal, Minimized, Maximized и Hidden. Таким образом, чтобы запустить неподписанный скрипт в фоновом режиме, нужно выполнить команду:
powershell -executionpolicy RemoteSigned -WindowStyle Hidden -file <имя_скрипта>
Так же можно еще при желании добавить -NonInteractive, чтобы скрипт не задавал никаких вопросов. Таким образом, скрипт выполнится незаметно для пользователя. Будmте внимательны, используя такой способ.
Запуск скрипта PowerShell c параметрами
Собственно запуск нужно делать как если бы вы запускали обычную программу или bat-файл с параметрами. Например, для запуска скрипта с параметрами из командной, можно написать такую команду:
powershell -executionpolicy RemoteSigned -file <имя_скрипта> param1 param2 "еще один текстовый параметр"
В самом скрипте вы можете получить эти параметры так:
В интегрированной среде PowerShell ISE запустить скрипт с параметрами можно аналогично, используя область команд.
Как запустить скрипт PowerShell с помощью ярлыка?
Осуществить такую задачу можно двумя способами:
- Создать bat/cmd файл, в котором прописать команду для запуска скрипта (с параметрами вы ознакомились выше)
- Создать ярлык на PowerShell, который можно найти в папке c:\Windows\System32\WindowsPowerShell\v<версия>\ и в свойствах ярлыка в поле "Объект" дописать необходимые параметры.
Таким образом, например, чтобы запустить скрипт powershell при входе пользователя, можно просто создать ярлык, как описано во 2-м пункте и поместить его в автозагрузку. Так же, создание ярлыка одним из способов выше позволит легко запустить скрипт от имени администратора или от имени любого другого пользователя как обычную программу.
Скриптовый язык PowerShell - довольно мощный инструмент для решения различных задач, но его можно использовать не только для хороших вещей, но и во вред, поэтому, пользуйтесь им с умом ;)
Прямой запуск
Set-Location ″C:\Program Files″
.\Hello.exe
Обратите внимание, что даже находясь в нужном каталоге, требуется указывать относительный путь к исполняемому файлу. Исключение составляют файлы из директорий, перечисленных в переменной окружения (path). Например различные встроенные программы и утилиты (notepad, calc, ping и т.п.), находящиеся в директории Windows\System32, можно запускать без указания пути.
Оператор &
Если необходимо указать полный путь к исполняемому файлу, то можно воспользоваться оператором & (оператор вызова). Он позволяет выполнить строку текста, указанную в кавычках, как единую команду. Например:
Поскольку оператор & не анализирует передаваемую команду, то он не может интерпретировать ее параметры. Поэтому дополнительные параметры\аргументы передаются также в виде текста, в кавычках. Для примера возьмем предыдущую программу и немного изменим ее, так что она принимает нужный текст в виде аргумента:
& ′C:\Program Files\Hello.exe′ ′Hello, world′
При желании можно указать нескольких аргументов через запятую:
& ′C:\Program Files\Hello.exe′ ′Hello,′, ′ world′
Для удобства команду и аргументы можно поместить в переменные:
$exe = ′C:\Program Files\Hello.exe′
$arg1 = ′Hello′
$arg2 = ′world′
& $exe $arg1 $arg2
Ну и если аргументов много, то их можно объединить, воспользовавшись такой конструкцией:
$exe = ′C:\Program Files\Hello.exe′
$allargs = @(′Hello,′,′world′)
& $exe $allargs
Invoke-Expression
Invoke-Expression -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 -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
из которой можно затем можно узнать многие полезные вещи, такие как статус:
или код выполнения:
Такой способ достаточно неудобен и громоздок (на мой взгляд), но чуть более гибок в использовании. Для примера запустим нашу программу в текущем окне, передадим в нее аргументы и заберем результат выполнения:
С помощью WMI можно сделать практически все, в том числе и запустить программу. Для этого вполне подойдет метод Create WMI-класса Win32_Process. Этот метод запускает процесс на локальном или удаленном компьютере через RPC. Например, для выполнения программы на локальном компьютере можно воспользоваться такой командой:
А для выполнения на удаленном компьютере команда будет выглядеть так:
Как вариант, можно воспользоваться командлетом 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 @
WMI запускает процесс в отдельном окне и возвращает объект, содержащий идентификатор процесса (ProcessID) и результат выполнения (ReturnValue). ReturnValue может принимать следующие значения:
Invoke-Command
Командлет Invoke-Command умеет выполнять команды на локальном или удаленном компьютере, используя WinRM. Например, для запуска нашей программы на локальном компьютере используем команду:
При необходимости в программу можно передать аргументы:
Обратите внимание, что Invoke-Command не очень дружит с пробелами, поэтому во избежании ошибок приходится исхитряться с кавычками. Впрочем, подобных проблем можно избежать, например комбинируя использования командлета с оператором &:
Invoke-Command -ScriptBlock -ComputerName SRV1,SRV2,SRV3
$scriptblock =
$Computers = @(′SRV1′,′SRV2′,′SRV3′)
Invoke-Command -ScriptBlock $scriptblock -ComputerName $Computers
По умолчанию командлет возвращает результат выполнения программы, а если запустить его в фоновом режиме (параметр -AsJob), то возвращает объект Job:
Invoke-Command -ScriptBlock -ComputerName localhost -AsJob -JobName Hello
Invoke-Item
Командлет Invoke-Item предназначен для применения к файлу действия по умолчанию. Так запустить исполняемый файл можно командой:
Invoke-Item -Path ″C:\Program Files\Hello.exe″
Однако наиболее удобно использовать Invoke-Item для открытия определенного типа файлов. Например так мы откроем текстовый файл:
Invoke-Item -Path ″C:\Files\test.txt″
А так все текстовые файлы в папке:
Invoke-Item -Path ″C:\Files\*.txt″
cmd /c ″C:\Program Files\Hello.exe″
Такое вот изобилие способов запустить программу предоставляет PoSh. И каждый из них хорош для определенных ситуаций.
Кстати, статья написана по мотивам PowerShell: Deep Dive and Best Practice. Рекомендую почитать, там еще много интересного.
Оболочка Windows PowerShell построена с использованием интерактивного интерфейса командной строки (CLI). Одна из основных задач интерфейса CLI – предоставить пользователям возможность запускать программы. Однако я не раз сталкивался с такими вопросами как: «Необходимо запустить такую-то утилиту командной строки в оболочке PowerShell. Я безуспешно пытался различными способами заключить параметры в кавычки. Как заставить программу корректно работать в оболочке PowerShell?»
Выполнение исполняемого файла с корректной расстановкой кавычек в оболочке Cmd.exe не представляет трудности, ведь процесс Cmd.exe не проводит дополнительный синтаксический анализ командной строки с исполняемым файлом. Если вы пишете сценарий для оболочки Cmd.exe (то есть пакетный файл), запускаемый как исполняемый файл, то можете увидеть, как будет выглядеть командная строка исполняемого файла, просто добавив к этой командной строке префикс Echo, который дает оболочке Cmd.exe команду не выполнять полученную строку, а вывести ее на экран. Это простая и эффективная техника отладки.
Однако в оболочке PowerShell задача немного усложняется, поскольку синтаксический анализатор командной строки здесь сложнее, чем в оболочке Cmd.exe. Команда Echo в оболочке PowerShell на самом деле является псевдонимом команды Write-Host, поэтому вы не можете задействовать ее в оболочке PowerShell для просмотра полной командной строки, как в оболочке Cmd.exe. В оболочке PowerShell отсутствует встроенный механизм просмотра полной командной строки для исполняемого файла.
Чтобы обойти данное ограничение, я написал короткую программу для командной строки, ShowArgs.exe. Цель этой программы — вывести на экран переданные ей параметры командной строки без анализа или интерпретации. Заменив ShowArgs.exe программу, которую вы пытаетесь запустить (но сохраняя параметры вашей программы), вы сможете увидеть именно те параметры командной строки, которые будет использовать оболочка PowerShell.
Используя приложение ShowArgs.exe (доступно для загрузки на нашем сайте), я покажу, как справляться с наиболее распространенными проблемами типа «как правильно заключить выражение в кавычки» при запуске исполняемых файлов в оболочке PowerShell. Для примеров, приведенных в этой статье, я создал каталог с именем C:\Sample Tools и скопировал файл ShowArgs.exe в него.
Запуск исполняемых файлов в оболочке PowerShell
Для запуска исполняемого файла в оболочке PowerShell достаточно просто указать его имя. Точно так же запускаются исполняемые файлы в оболочке Cmd.exe. На экране 1 приведены два примера запуска приложения ShowArgs.exe напрямую в оболочке PowerShell. На экране 1 для запуска приложения ShowArgs.exe требуется префикс «.\», так как оболочка PowerShell по умолчанию не запускает исполняемые файлы из текущего каталога.
Экран 1. Запуск исполняемого файла в PowerShell |
Если имя исполняемого файла, путь к нему или его полное имя не содержат пробелы, использовать оператор вызова (&) необязательно (см. экран 2). В остальных случаях он необходим.
Экран 2. Использование оператора вызова в некоторых случаях не является обязательным |
Однако вы не можете использовать оператор & для вызова командной строки целиком. На экране 3 показана эта распространенная ошибка. Первая команда на экране 3 завершается с ошибкой, потому что строка, заключенная в кавычки, после оператора вызова не является именем файла (о чем и сообщает система). Вторая команда на экране 3 исправляет эту ошибку. В этой команде в кавычки помещается только имя исполняемого файла, а параметры выносятся в конец команды.
Экран 3. Общие ошибки при использовании оператора вызова |
Как показано на экране 4, вы можете сохранить результаты выполнения исполняемого файла в переменную. Первая команда на экране запускает файл Find.exe с параметром «/?» и сохраняет результат в переменную $findHelp. Вторая команда показывает, что переменная содержит массив, а последняя выводит на экран содержимое массива. Если программа возвращает только одну строку, переменная будет содержать отдельную строку, а не массив.
Экран 4. Сохранение результатов выполнения исполняемого файла в переменную |
Командная строка исполняемого файла: заключение параметров в кавычки
Если параметр содержит пробелы, необходимо заключать его в кавычки. Сами по себе кавычки не являются частью параметра, а, следовательно, вы можете заключать в кавычки параметры, которые не содержат пробелы, но в таких случаях использование кавычек не обязательно.
Следующие инструкции могут помочь избежать проблем при указании параметров для исполняемых файлов в оболочке PowerShell. Все примеры в данном разделе используют приложение ShowArgs.exe с предполагаемыми параметрами. Я рекомендую запустить эти примеры, чтобы увидеть, какие именно параметры командной строки будет использовать оболочка PowerShell.
Инструкция 1. В случаях, когда вы указываете параметр непосредственно в командной строке и этот параметр содержит пробелы, необходимо только добавить кавычки. Например:
Эта команда работает именно так, как ожидается. Оболочка PowerShell видит, что строка, заключенная в кавычки, содержит пробел, и заключает ее в кавычки при передаче параметра исполняемому файлу. Добавлять дополнительные кавычки к строке не требуется. Другими словами, не нужно использовать один из приведенных ниже вариантов:
Оболочка PowerShell удалит лишние кавычки таким образом, чтобы у параметра был только один набор кавычек. А значит, дополнительные кавычки не выполняют никакой функции, а лишь затрудняют прочтение команды. Если параметр не содержит пробелов, использование кавычек не обязательно.
Инструкция 2. Если в качестве параметра исполняемого файла вы хотите передать переменную, то можете просто поместить переменную в командную строку с исполняемым файлом. Ниже приведен пример:
Если содержимое переменной включает пробелы, оболочка PowerShell автоматически добавит кавычки. Как и в случае с предыдущим примером, нет необходимости добавлять дополнительные кавычки.
Инструкция 3. Если параметр использует аргумент, связанный с параметром (то есть параметр и его аргумент должны писаться слитно, без разделения пробелом), вы можете заключить в кавычки параметр целиком, вместе с его аргументом. Для тех, кто не понимает разницы между параметром и аргументом, поясню, что параметр – это выражение, которое указывается после команды и управляет ее поведением, в то время как аргумент предоставляет дополнительную информацию о параметре. Вы также можете заключить в кавычки лишь аргумент параметра. Например, следующие команды эквивалентны друг другу:
Аналогичная ситуация возникает, если между параметром и аргументом находится разделительный символ, например двоеточие (:) или знак равенства (=). Другими словами, следующие две команды эквивалентны:
Следующие две команды также эквивалентны:
Как и в предыдущих примерах, добавление дополнительных кавычек не обязательно.
Инструкция 4. Если вы используете переменную в качестве аргумента параметра, не требуется добавлять дополнительные кавычки, даже если содержимое переменной включает пробелы. Например, все перечисленные ниже команды будут работать корректно:
Инструкция 5. Если параметр начинается с дефиса (-), аргумент параметра связан с параметром (не отделен пробелом) и аргумент параметра хранится в переменной, необходимо либо поставить перед дефисом в начале параметра знак обратной кавычки (`) либо взять в кавычки параметр целиком или только его связанный аргумент. Например, следующая команда не будет работать корректно:
Вместо нее необходимо использовать одну из команд:
Это правило применяется, когда параметр и аргумент либо связаны напрямую (например, -name$name) или через символ (такой как: или =), стоящий между ними. Однако оно неприменимо, если аргумент параметра не хранится в переменной. Например, следующие две команды эквивалентны:
Если вы не знаете наверняка, командную строку какого вида оболочка PowerShell будет использовать, замените имя исполняемого файла приложением ShowArgs.exe, и вы увидите именно те параметры командной строки, которые оболочка PowerShell будет использовать для запуска исполняемого файла.
Получение кода завершения исполняемого файла
Оболочка Cmd.exe использует динамическую переменную окружения ERRORLEVEL для хранения кода завершения последнего запущенного исполняемого файла. Оболочка PowerShell для этих целей использует переменную $LASTEXITCODE. Обычно можно проверить, возникли ли ошибки при выполнении исполняемого файла, выяснив, равна ли переменная $LASTEXITCODE нулю.
Формирование командной строки исполняемого файла, использующей логические операторы
Если требуется сформировать командную строку, зависящую от логических операторов, вам может потребоваться дополнительная гибкость. Например, рассмотрим сценарий Test.ps1 в листинге 1.
Если вы запустите сценарий Test1.ps1 с параметром -Test, оболочка PowerShell выполнит команду:
Однако на самом деле необходимо, чтобы оболочка PowerShell выполнила команду:
Другими словами, мы хотим, чтобы оболочка PowerShell интерпретировала параметр $params как командную строку целиком, а не как отдельный строковый параметр исполняемого файла.
Одно решение заключается в использовании команды Start-Process (см. листинг 2). У команды Start-Process есть параметр -ArgumentList, который представляет собой массив параметров командной строки. Оболочка PowerShell автоматически не расставляет кавычки для этих параметров, так что вам придется вставить кавычки там, где нужно.
У использования команды Start-Process есть ряд недостатков:
- Если вы хотите перехватить выходные данные исполняемого файла, необходимо задействовать параметр -RedirectStandardOutput. Сценарий Test3.ps1 в листинге 3 иллюстрирует этот подход. Данный сценарий создает временный файл, запускает исполняемый файл (перенаправляя выходные данные во временный файл) и возвращает выходные данные с помощью команды Get-Content.
- Команда Start-Process не обновляет переменную $LASTEXITCODE.
Чтобы добавить еще немного гибкости, вы можете задействовать функцию Start-Executable, описанную в листинге 4. Функция Start-Executable не использует временный файл и обновляет переменную $LASTEXITCODE. Параметр -ArgumentList данной функции работает аналогично параметру -ArgumentList команды Start-Process.
Администратор создание ленивое и по этому они (администраторы) неустанно ищут супер утилиту которая вместо них самих выполняла бы всю их работу ну или основную часть. Наиболее распространенным методом «избавления от головной боли и экономии времени» стала запись и последовательное пакетное исполнение необходимых операций - исполнение скриптов или сценариев в интерпретаторе команд операционной системы, так и был создан Windows PowerShell.
Редактирование в командном окне Windows PowerShell
Windows PowerShell поддерживает те же возможности редактирования вводимых команд, что и в стандартной оболочке cmd.exe Вспомним ключевые:
Работа с буфером обмена Windows: правой кнопкой мыши на заголовке окна PowerShell, меню "Изменить - Пометить", затем удерживая нажатой клавишу <shift> выделить нужный блок и нажать <enter>. Можно упростить манипуляции с буфером Windows включив режим выделения мышью и быстрой вставки.
* ПРИМЕЧАНИЕ:
Если имеются несколько строк с командами, то достаточно скопировать их все и вставить в окно консоли, команды будут выполнятся поочерёдно - нет необходимости копировать и вставлять строки с командами по одной!
Автоматическое завершение команд Windows PowerShell
Находясь в оболочке Windows PowerShell, можно ввести часть какой-либо команды, нажать клавишу <tab> и система попытается сама дописать полное имя этой команды. Автоматическое завершение команд срабатывает для имен файлов и путей файловых систем до первого найденного совпадения. При повторном нажатии клавиши <tab> выполняется циклический переход по имеющимся возможностям выбора.
В оболочке Windows PowerShell также реализована возможность автоматического завершения путей файловой системы на основании шаблонных символов: ? (любой один символ) и * (любое количество произвольных символов). Например:
После нажатия на клавишу <tab> путь будет преобразован в cd 'C:\Program Files' .
В оболочке Windows PowerShell имеется возможность автоматического завершения имен командлетов и их параметров. Если ввести первую часть имени (глагол) командлета и дефис, после этого нажать клавишу <tab>, то система выдаст имя первого подходящего командлета. Аналогичным образом срабатывает автозавершение и для параметров командлета, например введя имя командлета и дефис, после чего нажать <tab>, то автоматически будет подставлено имя первого подходящего параметра для этого командлета.
Windows PowerShell позволяет автоматически завершать имена переменных. И наконец Windows PowerShell поддерживает автоматическое завершение имён свойств и методов объектов. Например:
Система подставила свойство Length, имеющееся у символьных переменных. Если подставляется имя метода (функции), а не свойства, то после его имени автоматически ставится круглая скобка. Например:
Теперь можно вводить параметры метода (функции).
Получение справки Windows PowerShell
Краткую справку по командлетам Windows PowerShell можно получить введя "-?" сразу после имени командлета, более подробную информацию о командлете можно получить при помощи команд help или get-help с ключами -detailed или -full. При использовании ключа -detailed некоторые технические детали опускаются.
Как видим некоторые параметры командлетов например как "-Body" требуют ввода атрибутов (значений), в полной справке с ключом "-full" даётся пояснение про их использование:
- Требуется? - Указывает, будет ли командлет выполнятся при отсутствии этого параметра. Если значение True, значит параметр обязателен. Если он не указан, система запросит его значение
- Позиция? - Показывает, используется ли параметр как именованный или позиционный (под номером). Позиционные параметры должны появляться в указанном месте команды. Если 0 или named, это значит, что при задании значения параметра необходимо указывать его имя. Если атрибут Позиция? имеет целое ненулевое значение, то имя параметра можно не указывать, в этом случае это так званый позиционный параметр. Например, "2" означает, что при отсутствии имени параметра этот параметр должен быть вторым. Если используется имя параметра, параметр может располагаться в любом месте команды.
- Значение по умолчанию - Содержит значение по умолчанию, в случае когда значение не определено явно. Часто обязательным параметрам, так же как и многим необязательным, никогда не присваивается значение по умолчанию. Например, многие команды, чьим входным значением является параметр -path, при отсутствии значения используют текущее местоположение.
- Принимать входные данные конвейера? - Показывает, можно ли (да) или нельзя (нет) посылать объекты в этот параметр по конвейеру. "По имени свойства" означает, что конвейеризованный объект должен иметь свойство с тем же именем, что и имя данного параметра.
- Принимать подстановочные знаки? - Показывает, может ли значение параметра включать подстановочные знаки, такие как "*" и "?".
Можно также получить справку не связанную с командлетами. Для просмотра всех доступных разделов справки используйте команду: help * Список тем обсуждение которых представлено в справочной службе Windows PowerShell, можно увидеть с помощью команды: help about_*
Отметим, что Get-Help выводит содержимое раздела справки на экран сразу целиком. man и help позволяют выводить справочную информацию поэкранно, аналогично команде more интерпретатора cmd.exe.
История команд в сеансе работы Windows PowerShell
Все команды которые мы выполняем в оболочке Windows PowerShell, система записывает в специальный журнал сеанса или журнал команд, что даёт возможность повторно использовать эти команды или их комбинации, не набирая их повторно на клавиатуре.
По умолчанию Windows PowerShell сохраняет последние 64 команды. Для изменения числа сохраняемых команд нужно изменить значение специальной переменной $MaximumHistoryCount, например:
Просмотреть полный список выполнявшихся команд можно нажав клавишу F7 но, можно просматривать не весь список, а только те команды которые начинаются с определённых символов, для этого нужно ввести начальные символы и нажимать F8 для прокручивания списка команд начинающихся с этих символов.
Также есть возможность выполнить команду по её номеру в истории команд, для этого нужно нажать F9 и ввести порядковый номер в истории команд.
Кроме клавиатурных комбинаций для работы с журналом команд в Windows PowerShell имеются специальные командлеты, get-history (псевдонимы h, history и ghy) позволяет вывести историю команд, по умолчанию последние 32 команды. Число выводимых команд можно изменить с помощью параметра -Count.
Можно выделять из журнала сеанса команды, удовлетворяющие определённому критерию. Для этого используется конвейер и специальный командлет Where-Object. Например, для вывода команд, содержащих слово del, можно выполнить следующую команду:
Только после полного отключения блокировщика скриптов и рекламы на этом месте появится полезная подсказка/ссылка/код/пример конфигурации/etc!
Полученный с помощью Get-History список команд можно экспортировать во внешний файл в формате XML или CVS (текстовый файл с запятыми в качестве разделителя). Например:
С помощью командлета Add-History можно добавлять команды обратно в журнал сеанса:
Командлет Invoke-History (псевдонимы r, сокращение от "repeat" или "return", и ihy) позволяет повторно выполнять команды из журнала сеанса, при этом команды можно задавать по их порядковому номеру или первым символом, а также получать по конвейеру от командлета Get-History. Например:
Протоколирование действий в сеансе работы Windows PowerShell
В оболочке Windows PowerShell можно вести запись в текстовый файл всего сеанса работы включая результат выполнения команд. Для этой цели служит командлет Start-Transcript , имеющий синтаксис:
Если имя файла протокола не указанно, то он будет сохранятся в файле, путь к которому задан в значении глобальной переменной $Transcript Если переменная не определена, то командлет Start-Transcript сохраняет протоколы в каталоге " $HOME\Мои документы " в файлах " PowerShell_transcript..txt ".
Если файл протокола, в который должен начать сохранятся сеанс работы, уже существует, то по умолчанию он будет переписан. Параметр командлета Start-Transcript -append включает режим добавления нового протокола к существующему. Если же указан параметр -noclobber, а файл уже существует, то командлет Start-Transcript не выполняет никаких действий.
Настройка профилей Windows PowerShell
Все настройки произведённые в течении текущей сессии будут действовать только во время текущего сеанса работы и будут утеряны после выхода их оболочки PowerShell. Для сохранения изменений необходимо создать профиль пользователя PowerShell и записать в него все команды, которые будут определять все нужные нам псевдонимы, функции, переменные и т. п.. Профиль пользователя PowerShell - это сценарий, который будет загружаться при каждом запуске Windows PowerShell.
Грамотно созданный профиль может существенно облегчить работу в Windows PowerShell и администрирование операционной системы в целом. Создание и распространение профилей может помочь поддерживать единородное и согласованное представление оболочки Windows PowerShell не нескольких компьютерах.
Windows PowerShell поддерживает профили четырех типов. Дело в том, что модель Windows PowerShell предусматривает возможность использования разных интерфейсов для языка (так называемых интерфейсов), а powershell.exe представляет собой лишь один из таких хостов.
Проверить создан ли тот или иной профиль можно командой:
Если профиль существует, то команда выдаст True , в противном случае - False . Для создания или изменения существующего профиля нужно открыть в текстовом редакторе файл, путь к которому хранится в одной из указанных выше переменных. Сделать это можно прямо из оболочки Windows PowerShell:
Только после полного отключения блокировщика скриптов и рекламы на этом месте появится полезная подсказка/ссылка/код/пример конфигурации/etc!
Далее следует сохранить файл в каталоге \Мои документы\WindowsPowerShell\ , если каталог \Мои документы\WindowsPowerShell\ отсутствует, то его нужно будет предварительно создать, перейти в этот каталог и там сохранить этот файл с именем Microsoft.PowerShell_profile.ps1
Теперь выйдем из Windows PowerShell и снова откроем его, если выдается ошибка, то это говорит о том, что установленная по умолчанию политика " Restricted " запрещает выполнение PowerShell скриптов. Для разрешения выполнения скриптов следует выполнить команду:
Set-ExecutionPolicy RemoteSigned
Снова выйдем и запустим Windows PowerShell и теперь мы должны увидеть, что полный путь, в котором открыта оболочка Windows PowerShell, отображается в верхней панели окна, а приглашение командной строки имеет вид " PS > ". Таким образом область ввода команд не забивается текущим путём в котором запущена оболочка и свободна для ввода команд, а текущий путь мы всегда сможем созерцать в верхней части окна.
Windows PowerShell как калькулятор
В командной строке PowerShell можно вычислять выражения, то есть пользоваться командной строкой как калькулятором (в оболочке cmd.exe эта возможность отсутствовала).
Результат сразу появляется на экране и нет нужды использовать для вычислений дополнительные команды. В командной строке можно также вычислять значения с плавающей точкой:
PowerShell способен выполнять и более сложные математические вычисления. Например вычисление квадратного корня из числа 327 :
В этом примере используется метод Sqrt() класса System.Math Результаты вычислений можно сохранять в переменную и пользоваться ими в рамках текущей сессии:
Запуск .bat в PowerShell
Для запуска .bat файлов в PowerShell необходимо переместится в каталог с нужным .bat или .cmd файлом при помощи команды cd c:\script и там набрать его имя вместе с расширением PS > ./flush.bat или без него PS > ./flush при этом уточнить в консоли PowerShell место запуска ./ .bat или .cmd файла или же указать в консоли PowerShell полный путь к .cmd или .bat файлу.
P.S. Если на этой странице вы не нашли ответа на свой вопрос задайте его в комментариях незабыв при этом подписаться на получение ответа на него!
Автор: Олег Головский
Рекомендуемый контент
Вы не любите рекламу!? Напрасно!:) На нашем сайте она вовсе ненавязчивая, а потому для нашего сайта можете полностью отключить AdBlock (uBlock/uBlock Origin/NoScript) и прочие блокировщики рекламы! AdBlock/uBlock может препятствовать нормальной работе системы поиска по сайту, отображению рекомендуемого контента и прочих сервисов Google. Рекомендуем полностью отключить блокировщик рекламы и скриптов, а также разрешить фреймы (aka iframe).
Читайте также: