Отладка сценариев в интегрированной среде сценариев windows powershell
Содержание:
- Удаленное взаимодействие «один ко многим»
- Long description
- SSH через Powershell
- Бэкап, удаление и восстановление задач планировщика с Powershell
- Справка или помощь по Windows PowerShell
- Как удалить PowerShell в Windows 10
- Установка ZIP-пакета
- Как запустить скрипт PowerShell в Windows
- Не используйте break за пределами цикла, switch или trap
- How to run a script
- Запуск и получение дополнительной информации
- Запуск 32-разрядной версии Windows PowerShell
- Просмотр
- Создание
- Параметры командлетов powershell
- Установка из Microsoft Store
- Set-Executionpolicy
- Предварительные требования
- Требования к операционной системе
- Как запустить скрипт PowerShell по расписанию
- Разрешить выполнение скриптов powershell
- Устранение проблем политики и предпочтений
- Обучение тому, как правильно чему-то научиться в PowerShell
Удаленное взаимодействие «один ко многим»
Иногда может потребоваться выполнить задачу в интерактивном режиме на удаленном компьютере. Удаленное взаимодействие гораздо более эффективно при выполнении задачи на нескольких удаленных компьютерах одновременно. С помощью командлета выполните команду на одном удаленном компьютере или нескольких одновременно.
В предыдущем примере на три сервера были отправлены запросы состояния службы времени Windows. Командлет был помещен в блок сценария . На самом деле сценарий выполняется на удаленном компьютере и результаты возвращаются на локальный компьютер в виде десериализованных объектов.
Передача предыдущей команды в подтверждает, что результаты действительно десериализованы.
Обратите внимание, что в десериализованных объектах отсутствует большинство методов. Это значит, что они не являются активными объектами, они инертны
Нельзя запускать или останавливать службу с помощью десериализованного объекта, так как он является моментальным снимком состояния этого объекта на момент выполнения команды на удаленном компьютере.
Это не значит, что вы не можете запускать или прекращать работу службы с помощью метода . Это просто значит, что метод должен быть вызван в удаленном сеансе.
Чтобы доказать это, далее я остановлю службу времени Windows на всех трех удаленных серверах с помощью метода Stop() .
Как отмечалось в предыдущей главе, если для выполнения задачи существует командлет, рекомендуется использовать его, а не метод. В предыдущем сценарии вместо метода остановки советую выполнить командлет . Чтобы доказать свою точку зрения, я решил использовать метод Stop() , так как многие люди ошибочно полагают, что в рамках удаленного взаимодействия PowerShell вызывать методы невозможно. Их нельзя вызывать в возвращаемом объекте, потому что он десериализован, но можно вызывать в самом удаленном сеансе.
Long description
A script is a plain text file that contains one or more PowerShell commands.
PowerShell scripts have a file extension.
Running a script is a lot like running a cmdlet. You type the path and file
name of the script and use parameters to submit data and set options. You can
run scripts on your computer or in a remote session on a different computer.
Writing a script saves a command for later use and makes it easy to share with
others. Most importantly, it lets you run the commands simply by typing the
script path and the filename. Scripts can be as simple as a single command in
a file or as extensive as a complex program.
Scripts have additional features, such as the special comment, the
use of parameters, support for data sections, and digital signing for security.
You can also write Help topics for scripts and for any functions in the script.
SSH через Powershell
Пример того, как можно работать через SSH:
#устанавливаем модуль SSH, один раз Find-Module Posh-SSH | Install-Module #Создаем SSH сессию: Import-Module Posh-SSH $ComputerName = "1.2.3.4" $UserName = "ubuntu" $KeyFile = "C:\SSH\key.pem" $nopasswd = new-object System.Security.SecureString $Crendtial = New-Object System.Management.Automation.PSCredential ($UserName, $nopasswd) $SSHSession = New-SSHSession -ComputerName $ComputerName -Credential $Crendtial -KeyFile $KeyFile #Создаем шелл: $SSH = $SSHSession | New-SSHShellStream # отправляет команду $SSH.WriteLine("ifconfig") # считываем ответ $SSH.read() #закрываем сессию: $sshSession | Remove-SSHSession
Команды:
- Get-SSHTrustedHost — посмотреть доверенные хосты
- Get-SSHSession — посмотреть список открытых сессий
- Remove-SSHSession — закрыть сессию
Ссылки:
- habrahabr.ru: Модуль Posh-SSH простой доступ к SSH и SCP из PowerShell
- Официальная страничка от создателя модуля — там еще можно посмотреть пример работы sftp
Бэкап, удаление и восстановление задач планировщика с Powershell
Удобной возможностью использования Powershell является импорт и экспорт задач планировщика. По сути вы можете создать шаблон, который можно использовать на разных компьютерах без особой работы с кодом. По умолчанию, сам Powershell, не предоставляет прямой возможности бэкапа и восстановления, но это можно сделать через другие команды.
Резервное копирование
Для бэкапа мы можем использовать команду Export-CliXml. Для этого нам нужно будет получить задачу и использовать конвейер:
Для экспорта в Powershell так же есть ‘Export-ScheduledTask’, но нет аналогичной команды импорта. Что бы импортировать такие файлы-задачи мы можем использовать только GUI. Из-за этого она не приведена в примере выше.
Удаление, отключение и включение
При удалении задачи, по умолчанию, запрашивается подтверждение. Что бы этого не было добавляется ключ ‘Confirm’:
Если требуется только отключить задачу используйте Disable:
Включение:
Восстановление
Восстановление выполняется в несколько шагов. Первое — мы должны выполнить импорт XML документа в Powershell:
На одном из сайтов я прочитал, что следующий параметр нужно изменять на «Interactive», так как без него не будет работать задача, но у меня этот параметр не изменялся при экспорте:
Этот параметр связан со входом пользователя через GUI. Аналогичное название в интерфейсе планировщика задач «Выполнять только для пользователей, вошедших в систему». Если этот параметр у вас отличается — вы сможете изменить его так:
Далее нам нужно зарегистрировать эту задачу определяя каждый из параметров отдельно:
Вам так же будет интересно:
Справка или помощь по Windows PowerShell
В PowerShell есть различные командлеты для получения той или иной справки. Но наиболее важный из них это: Get-Help
Введите в консоли команды:
И получите два различных описания, которые дополняют друг-друга, того как пользоваться справкой.
Возможности справки достаточно обширны, с примерами и детальным описанием на русском языке. Потому можно выводить ее в различных форматах.
Например:
- powershell -command Get-Help Get-Help — общая справка по командлету Get-Help
- powershell -command get-help Get-Help -examples — примеры того, как можно использовать командлет get-help
- powershell -command get-help Get-Help -detailed — подробная справка по командлету get-help
- powershell -command get-help Get-Help -full — наиболее полная справка по командлету get-help
winintro.ru/windowspowershellhelp.ru/ — справка в виде html-книги
Как удалить PowerShell в Windows 10
PowerShell – это функция, которую Windows устанавливает поверх обычной установки. Поэтому, если вы решите удалить его любым из этих методов, он ничего не сломает в Windows 10.
- Удалите как любое другое приложение
- Удалить с помощью функций Windows
- Отключить PowerShell с помощью DISM
Вы можете использовать любой из этих методов для удаления PowerShell.
1]Удалите его, как любое другое приложение.
Как и другие программы, PowerShell можно легко удалить.
Введите PowerShell в поле поиска меню «Пуск». Он покажет все версии PowerShell, то есть PowerShell (x86), PowerShell, PowerShell 7 и другие. Щелкните правой кнопкой мыши любой из них и выберите Удалить. Вы также можете развернуть меню и удалить его.
Единственная версия, которую нельзя удалить, – это PowerShell ISE, также известная как интегрированная среда сценариев Windows PowerShell. Это полезно для разработчиков, которые могут запускать команды и писать, тестировать и отлаживать сценарии в едином графическом пользовательском интерфейсе на основе Windows.
2]Удаление с помощью программы и функций
- Тип Контроль в командной строке (Win + R) и нажмите клавишу Enter.
- Найдите и нажмите «Программы и компоненты».
- Затем нажмите ссылку «Включить или отключить функцию Windows» на левой панели.
- Найдите и снимите флажок PowerShell 2.0 в раскрывающемся списке программ.
- Нажмите ОК и дайте программе завершить процесс удаления PowerShell.
3]Отключить PowerShell с помощью DISM
Откройте командную строку с повышенными привилегиями, набрав CMD в строке «Выполнить» (Win + R), а затем нажав Shift + Enter. После запуска введите и выполните команду для проверки.
DISM /online /get-features /format:table | find "MicrosoftWindowsPowerShellV2Root"
Если там написано «Включить», введите следующую команду, чтобы отключить его.
Dism /online /Disable-Feature /FeatureName:"MicrosoftWindowsPowerShellV2Root"
Если вы передумали, вы можете выполнить следующую команду, чтобы снова включить его.
Dism /online /Enable-Feature /FeatureName:"MicrosoftWindowsPowerShellV2Root"
Вот и все.
Пока PowerShell может оставаться сам по себе, и удалять его совсем не обязательно. На самом деле, если вы его оставите, он может когда-нибудь пригодиться. Это инструмент, который вам понадобится для удаления предустановленных приложений. Так что вы можете оставить его себе.
Надеюсь, этот пост помог вам удалить PowerShell с вашего ПК с Windows 10.
Теги: PowerShell, Удалить
Установка ZIP-пакета
Для поддержки расширенных сценариев развертывания доступны ZIP-архивы двоичных файлов PowerShell. Скачайте один из следующих ZIP-архивов на странице с выпусками.
- PowerShell-7.1.3-win-x64.zip
- PowerShell-7.1.3-win-x86.zip
- PowerShell-7.1.3-win-arm64.zip
- PowerShell-7.1.3-win-arm32.zip
В зависимости от способа загрузки файла может потребоваться разблокировать файл с помощью командлета . Распакуйте содержимое в выбранное расположение и запустите . В отличие от установки пакетов MSI при установке ZIP-архива не выполняется проверка соответствия предварительным требованиям. Для правильного удаленного взаимодействия с помощью WSMan необходимо обеспечить соответствие .
Используйте этот метод для установки версии PowerShell на основе ARM на таких компьютерах, как Microsoft Surface Pro X. Чтобы получить оптимальные результаты, устанавливайте PowerShell в папку .
Примечание
Этот метод можно использовать для установки любой версии PowerShell, в том числе последней:
- Стабильный выпуск: https://aka.ms/powershell-release?tag=stable
- Предварительный выпуск: https://aka.ms/powershell-release?tag=preview
- Выпуск LTS: https://aka.ms/powershell-release?tag=lts
Как запустить скрипт PowerShell в Windows
Для запуска скрипта с расширением .ps1 нужно открыть консоль PowerShell и затем указать полный путь до файла. Вы также можете перейти в папку со скриптом либо с помощью команды cd, либо, если вы хотите полностью окунуться в стиль PowerShell, то можете использовать Set-Location.
Например, мне нужно перейти в папку C:\Users\Администратор\Downloads\WinPwn-master\:
Set-Location C:\Users\Администратор\Downloads\WinPwn-master\
Если вы просто попытаетесь запустить скрипт, то почти наверняка столкнётесь с ошибкой, что запуск скриптов запрещён. Для исправления ошибки выполните команду:
Set-ExecutionPolicy unrestricted
Подробности смотрите в статье «Ошибка «Невозможно загрузить файл ….ps1, так как выполнение сценариев отключено в этой системе» (РЕШЕНО)»
Запуск скрипта с помощью Import-Module
При запуске некоторых скриптов может ничего не происходить. Дело в том, что скрипт может содержать в себе функцию, которую нужно импортировать, а затем запустить. Поищите в документации по интересующей вас программе примеры со строкой Import-Module.
Например для запуска WinPwn нужно вначале импортировать файл с функциями:
Import-Module .\WinPwn.ps1
А после этого можно вызывать содержащиеся в файле функции:
WinPwn
Не используйте break за пределами цикла, switch или trap
Если используется вне конструкции, которая напрямую поддерживает эту функцию (циклы, , ), PowerShell ищет Стек вызовов для включающей конструкции. Если не удается найти включающую конструкцию, текущее пространство выполнения беззвучно завершается.
Это означает, что функции и скрипты, которые случайно используют вне включающей конструкции, поддерживающей эту функцию, могут случайно завершить свои вызывающие объекты.
Использование внутри конвейера , такого как блок скрипта, не только завершает работу конвейера, но и может привести к завершению всего пространства выполнения.
How to run a script
Before you can run a script on Windows, you need to change the default
PowerShell execution policy. Execution policy does not apply to PowerShell
running on non-Windows platforms.
The default execution policy, , prevents all scripts from running,
including scripts that you write on the local computer. For more information,
see about_Execution_Policies.
The execution policy is saved in the registry, so you need to change it only
once on each computer.
To change the execution policy, use the following procedure.
At the command prompt, type:
or
The change is effective immediately.
To run a script, type the full name and the full path to the script file.
For example, to run the Get-ServiceLog.ps1 script in the C:\Scripts directory,
type:
To run a script in the current directory, type the path to the current
directory, or use a dot to represent the current directory, followed by a path
backslash ().
For example, to run the ServicesLog.ps1 script in the local directory, type:
If the script has parameters, type the parameters and parameter values after
the script filename.
For example, the following command uses the ServiceName parameter of the
Get-ServiceLog script to request a log of WinRM service activity.
As a security feature, PowerShell does not run scripts when you double-click
the script icon in File Explorer or when you type the script name without a
full path, even when the script is in the current directory. For more
information about running commands and scripts in PowerShell, see
about_Command_Precedence.
Run with PowerShell
Beginning in PowerShell 3.0, you can run scripts from File Explorer.
To use the «Run with PowerShell» feature:
Run File Explorer, right-click the script filename and then select «Run with
PowerShell».
The «Run with PowerShell» feature is designed to run scripts that do not have
required parameters and do not return output to the command prompt.
For more information, see about_Run_With_PowerShell.
Running scripts on other computers
To run a script on one or more remote computers, use the FilePath parameter of
the cmdlet.
Enter the path and filename of the script as the value of the FilePath
parameter. The script must reside on the local computer or in a directory that
the local computer can access.
The following command runs the script on the remote
computers named Server01 and Server02.
Запуск и получение дополнительной информации
Для запуска задачи, не зависимо от триггеров, используется команда ‘Start-ScheduledTask’:
У нас так же есть 2 команды, которые возвращают информацию о задачах.
Первая команда просто возвращает список задач, которые есть в каталогах планировщика их статус и путь:
У команды запуска и получения задач из планировщика можно использовать параметры:
- TaskName — имя объекта;
- TaskPath — путь до объекта.
Более полезная команда следующая, так как вернет немного больше информации:
Само собой все эти команды можно использовать в конвейере:
Если задача занимает много времени и ее нужно остановить — можно выполнить следующие действия:
Вам так же будет интересно:
Запуск 32-разрядной версии Windows PowerShell
При установке Windows PowerShell на 64-разрядном компьютере в дополнение к 64-разрядной версии устанавливается Windows PowerShell (x86) — 32-разрядная версия Windows PowerShell. При открытии Windows PowerShell по умолчанию запускается 64-разрядная версия.
Однако в некоторых случаях нужно запустить Windows PowerShell (x86) , например при использовании модуля, которому требуется 32-разрядная версия, или при удаленном подключении к 32-разрядному компьютеру.
Для запуска 32-разрядной версии Windows PowerShell воспользуйтесь любой из следующих процедур.
В Windows Server 2012 R2
- На экране Пуск щелкните Windows PowerShell (x86). Щелкните плитку Windows PowerShell x86.
- Выберите пункт Windows PowerShell (x86) в меню Сервис****диспетчера сервера.
- На рабочем столе переместите курсор в правый верхний угол, щелкните элемент Поиск , введите PowerShell x86 и выберите Windows PowerShell (x86) .
- В командной строке введите следующее:
В Windows Server 2012
- На экране Пуск введите PowerShell и выберите Windows PowerShell (x86).
- Выберите пункт Windows PowerShell (x86) в меню Сервис****диспетчера сервера.
- На рабочем столе переместите курсор в правый верхний угол, щелкните элемент Поиск , введите PowerShell и выберите Windows PowerShell (x86) .
- В командной строке введите следующее:
- На экране Пуск щелкните Windows PowerShell (x86). Щелкните плитку Windows PowerShell x86.
- Если вы используете средства удаленного администрирования сервера для Windows 8.1, можно также открыть Windows PowerShell x86 из меню Сервис диспетчера сервера. Выберите Windows PowerShell (x86).
- На рабочем столе переместите курсор в правый верхний угол, щелкните элемент Поиск , введите PowerShell x86 и выберите Windows PowerShell (x86) .
- В командной строке введите следующее:
Просмотр
- Как включить удаленное взаимодействие PowerShell?
- Какая команда PowerShell используется для запуска интерактивного сеанса с удаленным компьютером?
- В чем преимущество использования сеанса удаленного взаимодействия PowerShell по сравнению с простым указанием имени компьютера с помощью каждой команды?
- Можно ли использовать сеанс удаленного взаимодействия PowerShell с сеансом удаленного взаимодействия «один к одному»?
- Чем отличается тип объектов, возвращаемых командлетами, от типа объектов, которые возвращаются при выполнении этих же командлетов на удаленных компьютерах с ?
Создание
Представим, что каждое утро вы проверяете 50 последних логов за 14 часов журнала Application с помощью этой команды:
Команда не очень сложная, но в скором времени ее надоест писать. Для сокращения этой работы ее можно выделить в отдельную функцию:
Любая функция обязательно должна состоять из трех вещей:
- function — объявляет и говорит что после нее будет название;
- имя функции — название, по которому мы будем ее вызывать. В нашем случае имя Get-DayLog;
- скобки — обозначают начало и конец выражения.
После написания функции она вызывается по имени:
Учитывая, что нам может потребоваться получить данные не за последние 14 часов и более чем за 50 дней нам может потребуется изменить ее передав параметры.
Параметры командлетов powershell
-ErrorAction — параметр присутствует во всех командлетах, позволяет задать действие выполняемое при возникновении ошибки:
- Continue — вывести сообщение об ошибке и продолжить выполнение
- SilentlyContinue — проигнорировать ошибку и продолжить
- Stop — при первой же ошибке прервать выполнение
- Inquire — при возникновении ошибки вывести запрос что делать дальше
Пример: Copy-Item «d:\test1\klbackup*» «d:\test2\» -ErrorAction stop
-WhatIf — отображает сообщение, в котором описан результат команды, без фактического ее выполнения. Присутствует во всех командлетах.
get-help about_CommonParameters — описание параметров, которые могут использоваться с любым командлетом.
Установка из Microsoft Store
Версия PowerShell 7.1 опубликована в Microsoft Store. Этот выпуск PowerShell можно найти на веб-сайте Microsoft Store или в приложении Store в ОС Windows.
Пакет Microsoft Store обеспечивает следующие преимущества:
- автоматические обновления, встроенные в основной механизм Windows 10;
- интеграция с другими механизмами распространения программного обеспечения, такими как Intune и SCCM.
Ограничения
Пакеты MSIX выполняются в песочнице приложения, которая виртуализует доступ к некоторым расположениям в файловой системе и реестре.
- Все изменения реестра в разделе HKEY_CURRENT_USER при записи копируются в закрытое хранилище, отдельно для каждого пользователя и приложения. Таким образом, эти значения недоступны для других приложений.
- Параметры конфигурации системного уровня, хранящиеся в , нельзя изменить. Это относится и к конфигурации WSMAN. Это означает, что вы не сможете подключать удаленные сеансы к установкам PowerShell на основе хранилища. Поддерживаются конфигурации уровня пользователя и удаленное взаимодействие по SSH.
Подробнее см. Основные сведения о работе упакованных классических приложений в Windows.
Использование пакета MSIX
Примечание
Предварительные сборки PowerShell включают пакет MSIX. Пакет MSIX не поддерживается официально. Этот пакет создан исключительно для тестовых целей и только на период действия предварительной версии.
Чтобы вручную установить пакет MSIX на клиент Windows 10, скачайте пакет MSIX на странице GitHub с выпусками. Прокрутите вниз до раздела Ресурсы в выпуске, который вы хотите установить. Раздел «Ресурсы» может быть свернут. В таком случае щелкните его, чтобы развернуть.
MSIX-файл выглядит примерно так:
Для установки пакета необходимо использовать командлет .
Set-Executionpolicy
Что бы изменять значение политик выполнения скриптов PowerShell, существует коммандлет Set-ExecutionPolicy.
Данный командлет имеет следующие параметры:
-ExecutionPolicy
Указывает значение политики. Может иметь следующие значения: Restricted, AllSigned, RemoteSigned, Unrestricted, Bypass, Undefined. Данный параметр обязательный для указания. Если не указан, во время выполнения комадлет попросит указать значения.
PowerShell
Set-ExecutionPolicy
1 | Set-ExecutionPolicy |
Вывод:Укажите значения для следующих параметров: ExecutionPolicy:
-Scope
Определяет область применения данной политики. Может иметь следующие значения: LocalMachine ,Process, CurrentUser. Если параметр области применения не указан, по умолчанию указывается значение LocalMachine.
PowerShell
Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope Process
1 | Set-ExecutionPolicy-ExecutionPolicyUnrestricted-ScopeProcess |
или
PowerShell
Set-ExecutionPolicy Unrestricted Process
1 | Set-ExecutionPolicyUnrestricted Process |
-Force
С этим параметром командлет не будет требовать подтверждения со стороны пользователя.
Пример
PowerShell
Set-ExecutionPolicy Unrestricted Process -Force
1 | Set-ExecutionPolicyUnrestricted Process-Force |
Командлет ничего не выведет на экран и применит значение политики.
-Confirm
Если же вам наоборот мало одного подтверждения. Можно указать параметр Confirm и у вас будет ещё один, дополнительный, запрос на подтверждение ваших действий:
PowerShell
Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope Process -confirm
1 | Set-ExecutionPolicy-ExecutionPolicyUnrestricted-ScopeProcess-confirm |
Результат выполнения:
Подтверждение Вы действительно хотите выполнить это действие? Выполнение операции «Set-ExecutionPolicy» над целевым объектом «Unrestricted». Да — Y Да для всех — A Нет — N Нет для всех — L Приостановить — S Справка (значением по умолчанию является «Y»):
Изменение политики выполнения Политика выполнения защищает компьютер от ненадежных сценариев. Изменение политики выполнения может поставить под угрозу безопасность системы, как описано в разделе справки, вызываемом командой about_Execution_Policies. Вы хотите изменить политику выполнения? Да — Y Нет — N Приостановить — S Справка (значением по умолчанию является «Y»):
-WhatIf
С параметром WhatIf командлет не выполняется. А выводит на консоль свои предполагаемые действия без данного параметра.
PowerShell
Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope Process -WhatIf
1 | Set-ExecutionPolicy-ExecutionPolicyUnrestricted-ScopeProcess-WhatIf |
Результат выполниня:
WhatIf: Выполнение операции «Set-ExecutionPolicy» над целевым объектом «Unrestricted».
Предварительные требования
Последний выпуск PowerShell поддерживается в Windows 7 с пакетом обновления 1 (SP1), Windows Server 2008 R2 и более поздних версий.
Чтобы включить удаленное взаимодействие PowerShell через WSMan, нужно выполнить следующие условия:
- Установите универсальную среду выполнения C в Windows предшествующих Windows 10 версий. Ее можно скачать самостоятельно или через Центр обновления Windows. Этот пакет уже установлен в полностью исправленных системах.
- Установите Windows Management Framework (WMF) 4.0 или более поздней версии в Windows 7 и Windows Server 2008 R2. Подробные сведения о WMF см. в статье с обзором WMF.
Требования к операционной системе
Windows PowerShell 5.1
Windows PowerShell 5.1 выполняется в следующих версиях Windows: Для запуска Windows PowerShell 5.1 установите Windows Management Framework 5.1. Дополнительные сведения см. в статье Установка и настройка WMF 5.1.
Версия Windows | Требования к системе |
---|---|
Windows Server 2019 | Устанавливается по умолчанию |
Windows Server 2016 | Устанавливается по умолчанию |
Windows Server 2012 R2 | Установите Windows Management Framework 5.1 |
Windows Server 2012 | Установите Windows Management Framework 5.1 |
Windows Server 2008 R2 с пакетом обновления 1 (SP1) | Установите Windows Management Framework 5.1 |
Windows 10 версии 1607 и выше | Устанавливается по умолчанию |
Windows 10 версии 1507, 1511 | Установите Windows Management Framework 5.1 |
Windows 8.1 | Установите Windows Management Framework 5.1 |
Windows 7 с пакетом обновления 1 (SP1) | Установите Windows Management Framework 5.1 |
Windows PowerShell 5.0
Windows PowerShell 5.0 работает в следующих версиях Windows. Для запуска Windows PowerShell 5.0 установите Windows Management Framework 5.1. Дополнительные сведения см. в статье Установка и настройка WMF 5.1. Windows Management Framework 5.1 заменяет Windows Management Framework 5.0.
Версия Windows | Требования к системе |
---|---|
Windows Server 2019 | Более поздняя версия устанавливается по умолчанию |
Windows Server 2016 | Более поздняя версия устанавливается по умолчанию |
Windows Server 2012 R2 | Установите Windows Management Framework 5.1 |
Windows Server 2012 | Установите Windows Management Framework 5.1 |
Windows Server 2008 R2 с пакетом обновления 1 (SP1) | Установите Windows Management Framework 5.1 |
Windows 10 версии 1607 и выше | Более поздняя версия устанавливается по умолчанию |
Windows 10 версии 1507, 1511 | Устанавливается по умолчанию |
Windows 8.1 | Установите Windows Management Framework 5.1 |
Windows 7 с пакетом обновления 1 (SP1) | Установите Windows Management Framework 5.1 |
Windows PowerShell 4.0
Windows PowerShell 4.0 выполняется в следующих версиях Windows: Чтобы запустить Windows PowerShell 4.0, установите указанную версию Windows Management Framework для вашей операционной системы.
Версия Windows | Требования к системе |
---|---|
Windows 8.1 | Устанавливается по умолчанию |
Windows Server 2012 R2 | Устанавливается по умолчанию |
Windows 7 с пакетом обновления 1 (SP1) | Установите Windows Management Framework 4.0 |
Windows Server 2008 R2 с пакетом обновления 1 (SP1) | Установите Windows Management Framework 4.0 |
Windows PowerShell 3.0
Windows PowerShell 3.0 выполняется в следующих версиях Windows: Чтобы запустить Windows PowerShell 3.0, установите указанную версию Windows Management Framework для вашей операционной системы.
Версия Windows | Требования к системе |
---|---|
Windows 8 | Устанавливается по умолчанию |
Windows Server 2012 | Устанавливается по умолчанию |
Windows 7 с пакетом обновления 1 (SP1) | Установите Windows Management Framework 3.0 |
Windows Server 2008 R2 с пакетом обновления 1 (SP1) | Установите Windows Management Framework 3.0 |
Windows Server 2008 с пакетом обновления 2 (SP2) | Установите Windows Management Framework 3.0 |
Как запустить скрипт PowerShell по расписанию
Очень часто на серверах появляется необходимость по запуску скрипта PowerShell по расписанию или по определенному событию, которое появляется в логах Windows, в таких ситуациях нам на помощь приходит планировщик заданий.
Я приведу пример, когда мне нужно было отслеживать события ID 20291 или ID 11707. И так откройте окно выполнить и введите в нем:
taskschd.msc
Далее вы щелкаете по библиотеке правым кликом и из контекстного меню выбираете пункт «Создать задачу».
Задаете имя задания, советую запускать скрипт PowerShell от имени учетной записи «СИСТЕМА (SYSTEM)», это будет гарантировать, что задание точно отработает.
Поставьте галку «Выполнять с наивысшими правами»
Переходим на вкладку тригеры и создаем новый. В параметрах выберите «При событии»
Далее задаем:
- Журнал — Приложение
- Источник — MsiInstaller
- Код события — 11707
Тут тригер будет срабатывать, когда в логах появится событие 11707.
В действие оставляем «Запуск программы». В программе указываем powershell, а в параметрах задайте путь до самого скрипта, через параметр -File c:\scripts\id11707.ps1.
В итоге у меня вышло вот так.
Как видим, мое задание по запуску скрипта PowerShell успешно создано и отработало в планировщике Windows.
Разрешить выполнение скриптов powershell
Чтобы запускать созданные собою скрипты, необходимо разрешить выполнение ненадежных скриптов с помощью команды Set-ExecutionPolicy remotesigned и подтверждением (Внимание!!! для выполнения этой команды необходимо запустить PowerShell с правами администратора). После этого можно вновь запустить выполнения скрипта
Как запустить скрипт PowerShell в Windows-03
На вопрос жмем Y, для разрешения выполнения скриптов. После этих манипуляций вы сможете запустить ваш скрипт. То же самое я проделал и для PowerCLI, что в результате дало возможность теперь его запускать без проблем.
Устранение проблем политики и предпочтений
В этом разделе обсуждаются проблемы удаленного взаимодействия, связанные с политиками и предпочтениями, заданными на локальном и удаленном компьютерах.
Изменение политики выполнения для Import-PSSession и Import-Module
Командлеты и создают модули, которые содержат неподписанные файлы скриптов и файлы форматирования.
Чтобы импортировать модули, созданные этими командлетами, с помощью или , политика выполнения в текущем сеансе не может быть ограничена или AllSigned. Дополнительные сведения о политиках выполнения PowerShell см. в разделе about_Execution_Policies.
Чтобы импортировать модули без изменения политики выполнения для локального компьютера, установленного в реестре, используйте параметр Scope параметра, чтобы задать менее ограниченную политику выполнения для одного процесса.
Например, следующая команда запускает процесс с политикой выполнения. Изменение политики выполнения влияет только на текущий процесс и не изменяет параметр реестра PowerShell ExecutionPolicy .
Кроме того, с помощью параметра ExecutionPolicy можно запустить один сеанс с менее ограниченной политикой выполнения.
Дополнительные сведения о политиках выполнения см. в разделе about_Execution_Policies. Для получения дополнительных сведений введите .
Как задать и изменить квоты
Квоты можно использовать для защиты локального компьютера и удаленного компьютера от чрезмерного использования ресурсов, как случайных, так и вредоносных.
В базовой конфигурации доступны следующие квоты.
-
Поставщик WSMan (WSMan:) предоставляет несколько параметров квот, таких как параметры максенвелопесизекб и макспровидеррекуестс в узле, а также параметры максконкуррентоператионс, свойств maxconcurrentoperationsperuser и MaxConnections в узле.
-
Защитить локальный компьютер можно с помощью параметров максимумрецеиведдатасизеперкомманд и максимумрецеиведобжектсизе командлета и переменной предпочтений.
-
Защитить удаленный компьютер можно, добавив ограничения в конфигурации сеанса, например с помощью параметров максимумрецеиведдатасизеперкоммандмб и максимумрецеиведобжектсиземб командлета.
При конфликте квот с помощью команды PowerShell создает ошибку.
Чтобы устранить эту ошибку, измените удаленную команду так, чтобы она соответствовала квоте. Или определите источник квоты, а затем увеличьте квоту, чтобы завершить выполнение команды.
Например, следующая команда увеличивает квоту размера объекта в конфигурации сеанса Microsoft. PowerShell на удаленном компьютере с 10 МБ (значение по умолчанию) до 11 МБ.
Дополнительные сведения о командлете см. в разделе .
Дополнительные сведения о WS-Management квотах см. в разделе about_WSMan_Provider.
Устранение ошибок времени ожидания
Можно использовать время ожидания для защиты локального компьютера и удаленного компьютера от чрезмерного использования ресурсов, как случайных, так и вредоносных. Если время ожидания задано как на локальном, так и на удаленном компьютере, PowerShell использует самые короткие параметры времени ожидания.
В базовой конфигурации доступны следующие тайм-ауты.
-
Поставщик WSMan (WSMan:) предоставляет несколько параметров времени ожидания на стороне клиента и службы, например параметр макстимеаутмс в узле и параметры енумератионтимеаутмс и макспаккетретриевалтимесекондс в узле.
-
Защитить локальный компьютер можно с помощью параметров канцелтимеаут, IdleTimeout, OpenTimeout и OperationTimeout командлета и переменной предпочтений.
-
Кроме того, можно защитить удаленный компьютер, задавая значения времени ожидания программным способом в конфигурации сеанса для сеанса.
Если значение времени ожидания не позволяет завершить операцию, PowerShell завершает операцию и создает ошибку.
Чтобы устранить эту ошибку, измените команду для завершения в течение интервала времени ожидания или определите источник предельного времени ожидания и Увеличьте интервал времени ожидания, чтобы завершить выполнение команды.
Например, следующие команды используют командлет для создания объекта параметра сеанса со значением OperationTimeout , равным 4 минутам (в мс), а затем используйте объект параметра сеанса для создания удаленного сеанса.
Дополнительные сведения об истечении времени ожидания WS-Management см. в разделе справки по поставщику WSMan (тип ).
Дополнительные сведения о командлете см. в разделе New-PSSessionOption.
Обучение тому, как правильно чему-то научиться в PowerShell
Get-Help # хотя вы можеше использовать алиас на неё, под названием help
get-help New-Item -Examples
get-help files
PS C:\> get-help Files Name Category Synopsis ---- -------- -------- FileSystem Provider Provides access to files and dire... about_profiles HelpFile Describes how to create and use a...
get-help Registry
Маленькие, но очень полезные фишки, которые должны быть в жизни
И так, для тех, кто никогда не был в командной строке
- Нажатие кнопкок вверх и вниз позволяет вам прокручивать историю команд, и выбирать ранее набранные команды.
- Нажатие кнопки вправо, в конце строки, будет посимвольно перенабирать предыдущую команду.
Для тех, кто уже бывал в командных строках
- Ctrl+Home — удаляет всё, начиная с текущей позиции курсора до начала строки
- Ctrl+End — удаляет с курсора и до конца строки
- F7 — показывает окно со списком набранных команд, и позволяет выбрать одну из них.
- Для того, чтобы скопировать что-то в буфер, выделите это мышью и нажмите Enter.
- Для того, чтобы вставить строку из буфера — просто нажмите правую кнопку мыши.