Яковлев


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