MyTetra Share
Делитесь знаниями!
Как писать и как запускать скрипты PowerShell
Время создания: 18.06.2015 01:18
Автор: Xintrea
Раздел: Компьютер - Windows - Windows Power Shell
Запись: xintrea/mytetra_syncro/master/base/1434579537cu864bs6p8/text.html на raw.github.com

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 нужно выполнять из консоли 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.


Так же в этом разделе:
 
MyTetra Share v.0.65
Яндекс индекс цитирования