Основы безопасности Расширение файла.ps1, используемое для идентификации сценариев Windows PowerShell регистрируется в Microsoft Windows® как невыполнимый тип файла. Оболочка не ищет скриптовые файлы в текущем каталоге. Внутри оболочки есть скрипт под названием Execution Policy, который определяет перечень разрешенных сценариев. По умолчанию разрешенные сценарии отсутствуют. Не стоит менять конфигурацию настроек безопасности оболочки до тех пор, пока вы не будете отдавать себе полный отчет о возможных последствиях.
Политики исполнения Всего существует пять настроек политики выполнения: Restricted: сценарии не выполняются, за исключением некоторых скриптов с цифровой подписью от Microsoft RemoteSigned: Разрешено выполнение, но удаленные скрипты должны быть подписаны AllSigned: Разрешено выполнение, все скрипты должны быть подписаны Unrestricted: Разрешено выполнение любых скриптов Bypass: Полностью обходят политику безопасности Три метода изменить политику: Group Policy Administrators: командлет Set-ExecutionPolicy Users: используя параметр powershell.exe
Доверенные скрипты Доверенный скрипт – подписанный цифровым сертификатом, которому доверяет Ваш компьютер Требует Certification Authority Требует digital certificate Требует Цепочки доверия к доверенному СА Политики RemoteSigned или AllSigned
Using Parameters Параметризованные скрипты могут иметь позиционные и именованные параметры Этот блок: Может быть исполнен Or using this command line with named parameters: Param ( $computerName, $userName ) Param ( $computerName, $userName )./myscript 'localhost' 'Administrator'./myscript –computerName 'localhost' –userName 'Administrator'
Запрос параметра у пользователя FИногда вам может потребоваться запрос данных у пользователя, в случае, если вам не хватает значений некоторых параметров. Для решения этой задачи используется командлет Read-Host. Например, чтобы запросить у пользователя параметр, значение которого у вас отсутствует, используйте Read-Host как часть значения по умолчанию: Param ( $computerName = $(Read-Host 'Enter computer name'), $userName = $(Read-Host 'Enter user name') ) Param ( $computerName = $(Read-Host 'Enter computer name'), $userName = $(Read-Host 'Enter user name') )