PowerShell Scripts
Powershell scripts are store in .ps1 file. By default, you can’t run a script by just double-clicking a file. This protects your system from accidental harm. To execute a script:
Step 1: right-click it and click “Run with PowerShell.”
Moreover, there is a policy which restricts script execution. You can see this policy by running the Get-ExecutionPolicy command.
You will get one of the following output:
- Restricted— No scripts are allowed. This is the default setting, so it will display first time when you run the command.
- AllSigned— You can run scripts signed by a trusted developer. With the help of this setting, a script will ask for confirmation that you want to run it before executing.
- RemoteSigned— You can run your or scripts signed by a trusted developer.
- Unrestricted— You can run any script which you wants to run
Steps to Change Execution Policy
Step 1) Open an elevated PowerShell prompt. Right Click on PowerShell and “Run as Administrator”
Step 2) Enter the Following commands
- Get-ExecutionPolicy
- Set-executionpolicy unrestricted
- Enter Y in the prompt
- Get-ExecutionPolicy
Работа с сетью в Windows PowerShell
Для администрирования сети в Windows PowerShell существуют такие командлеты как:
- Disable-NetAdapter – командлет отключает сетевой адаптер;
- Enable-NetAdapter – данный командлет включает сетевой адаптер;
- Rename-NetAdapter — переименовывает сетевой адаптер;
- Restart-NetAdapter — перезапускает сетевой адаптер;
- Get-NetIPAddress – выводит информацию о конфигурации IP-адреса;
- Set-NetIPAddress — изменяет конфигурацию IP-адреса;
- New-NetIPAddress — создает и настраивает IP-адрес;
- Remove-NetIPAddress — удаляет IP-адрес и его конфигурацию;
- Get-NetRoute — выводит таблицу маршрутизации IP;
- Set-NetRoute — изменяет таблицу маршрутизации IP;
- New-NetRoute — создает запись в таблице маршрутизации IP;
- Remove-NetRoute — удаляет одну или несколько записей (IP маршрутов) из таблицы маршрутизации IP;
- Get-NetIPv4Protocol — выводит информацию о конфигурации протокола IPv4;
- Get-NetIPv6Protocol — выводит информацию о конфигурации протокола IPv6;
- Get-NetIPInterface — выводит информацию о свойствах интерфейса IP;
- Get-NetTCPSetting — показывает информацию о настройках и конфигурации TCP;
- Test-Connection – командлет посылает ICMP пакеты к одному или нескольким компьютерам, т.е. «пингует» компьютеры.
3. Командлеты
Командлеты (Cmdlets) — это специализированные команды PowerShell’а, которые реализуют различную функциональность. Это родные для PowerShell’а команды. Командлеты именуются по правилу Глагол—Существительное (Verb-Noun), например Get-ChildItem, благодаря чему их предназначение понятно из названия. Командлеты выводят результаты в виде объектов или их коллекций. Опционально командлеты могут получать входные данные в такой же форме и, соответственно, использоваться как получатели в конвейере. Хотя PowerShell позволяет передавать по конвейеру массивы и другие коллекции, командлеты всегда обрабатывают объекты поочередно. Для коллекции объектов обработчик командлета вызывается для каждого объекта в коллекции по очереди.
Командлеты являются специализированными классами .NET, экземпляры которых создаются в PowerShell и запускаются им при вызове. Командлеты наследуются от или от , причём последний используется тогда, когда командлету необходимо взаимодействовать с исполняемой частью PowerShell (PowerShell runtime). В этих базовых классах оговорены некоторые методы — , и , как минимум один из которых реализация командлета должна перезаписать для предоставления своей функциональности. Каждый раз при запуске командлета эти методы вызываются PowerShell’ом по очереди. Сначала вызывается , затем, если командлету передаются данные по конвейеру, — для каждого элемента, и в самом конце — . Класс, реализующий Cmdlet, должен иметь один атрибут .NET — , в котором указываются глагол (Verb) и существительное (Noun), составляющие имя командлета. Популярные глаголы (рекомендуется использовать только их) представлены в виде перечисления (Enum).
Реализации командлетов могут вызывать любые доступные .NET API и могут быть написаны на любом языке .NET. PowerShell также предоставляет некоторые дополнительные API, такие как , которые необходимы для доступа к специфичной для PowerShell функциональности, например для вывода результирующих объектов в конвейер. Командлеты могут использовать API для доступа к данным напрямую или воспользоваться инфраструктурой поставщиков (Provider) PowerShell, которые позволяют обращаться к хранилищам данных через уникальные пути. Хранилища данных представляются через буквы дисков и иерархическую структуру внутри них (директории). Windows PowerShell поставляется с поставщиками для файловой системы, реестра Windows, хранилища сертификатов, а также для псевдонимов команд (alias:), переменных (variable:) и функций (functions:). Другие приложения тоже могут добавлять свои командлеты и поставщики для доступа к своим хранилищам данных.
В PowerShell V2 была добавлена возможность создания командлетов на самом PowerShell, без использования .NET языков.
Как работает конвейер
Конвейер (pipline, pipe) — это возможность, которая позволяет удобно обменяться данными между командами. В большинстве языков пайплайн определяется символом ‘|’. Значения, которые указаны в левой части, передаются на чтения справа.
Если бы мы использовали конвейер с буквами, то получилось бы следующее:
В примере ниже слева указана строка, которая выводится через команду справа:
Предыдущий пример идентичен, по функциональности и результату, следующему выполнению:
Суть в том, что мы можем указать несколько значений в левой части. Каждое из этих значений будет передаваться асинхронно (т.е. отдельно). Значения, которые разделяются запятыми в Powershell, образуют массив:
В командах без конвейера мы редко можем использовать массивы в качестве значений. Что бы получить результат аналогичный предыдущей команде мы должны вызвать ее дважды:
Учитывая, что Powershell называют языком команд (или сценариев), нам просто удобнее использовать конвейер совмещая несколько команд. Чаще всего он используется в связке с «Select-Object» (выбор ‘колонки’) и/или с «Where-Object» (условие).
Так мы получим только день из сегодняшней даты:
stdin, stdout и stderr
Если вам сложно понять работу конвейера с примеров выше вы можете ознакомиться с понятием потоков (streams). Потоки реализованы в *nix системах и Windows. В Powershell реализовано 7 потоков, но основная концепция понятна в 3 потоках, которые так же реализованы в *nix системах. Это:
- stdin — ввод данных. Этот поток используется, когда вы печатаете текст или, например, когда результат работы одной команды принимает следующая. На уровне Powershell этого потока нет (в документациях не указывается, но скорее всего он реализован на уровне ОС);
- stdout — вывод результата. Этот результат может быть направлен на экран консоли, в файл, в другую команду и т.д. В powershell этот поток называется «Success Stream»;
- stderr — вывод ошибок. В Powershell называется «Error Stream».
Пример работы этих потоков в обычном виде:
В 1-ом случае мы используем stdin т.к. напечатали команду с клавиатуры. После вызова команды мы получили stdout (2). При ошибках мы получаем stderr.
В конвейере работает такой же принцип:
Мы так же напечатали текст использовав stdin. Затем был использован конвейер, который направил результат первой команды ( stdout) в stdin другой команды (3). Так как команда ‘echo’ тоже использует stdout — он был выведен на экран.
Разница конвейеров bash и Powershell
Разница работы конвейеров в типе объектов, которые через них проходят. В Powershell, в подавляющем большинстве, возвращается (попадают в stdout) массивы следующего вида:
Благодаря этому мы можем сразу получать нужное свойство не использовав сложные конструкции и регулярные выражения:
Bash же отправляет в stdout информацию в виде строки:
Так как это сплошной текст — нам приходится использовать дополнительные механизмы для поиска нужных данных. Например grep:
Есть и другие отличия. Например в Powershell есть переменные, в которые и помещаются данные конвейера: $PSItem или $_. Часть из таких возможностей будет рассмотрена далее.
Удаленное управление на PowerShell
Windows PowerShell рассчитан не только на локальное использование, но и на удаленное выполнение команд. Данная возможность необходима, чтобы Вы могли со своего рабочего места управлять удаленными компьютерами, т.е. выполнять команды PowerShell.
Существует несколько способов удаленного управления:
- С помощью параметра –ComputerName (есть у многих команд). Другими словами Вы передаете имя компьютера, на котором необходимо выполнить команду, в качестве параметра. Способ обладает недостатком, так как ограничивается выполнением одной команды;
- С помощью сессий. Командлет Enter-PSSession (интерактивный сеанс). Таким способом Вы подключаетесь к удаленному компьютеру и все команды, которые Вы будете набирать в оболочке PowerShell, будут выполняться на удаленном компьютере так же, как если бы Вы набирали команды непосредственно на удаленном компьютере. Способ также обладает недостатком, так как сеанс ограничивается одним компьютером;
- С помощью командлета Invoke-Command. С помощью данного способа можно выполнять команды или сценарии как на одном компьютере, так и на нескольких.
Например, чтобы подключиться к удаленному компьютеру (в примере ниже ServerName) интерактивным сеансом выполните следующую команду:
Enter-PSSession ServerName
Доступ к системному журналу
При попытке обнаружения причин сбоев мы часто обращаемся к системному журналу, в котором хранится множество полезной информации о событиях, происходивших в системе. Обычно для исследования системного журнала применяется утилита Event Viewer (eventvwr.exe). В PowerShell мы можем воспользоваться встроенными командами, например командой get-eventlog
, для быстрого исследования содержимого системного журнала (рис. 16).
Наша первая команда загружает ключевую информацию из системного журнала:
PS C:\> get-eventlog –list
Без использования опции –list
PowerShell запросит точное указание названия системного журнала. В нашем примере мы видим несколько точек входа в системном журнале: Application, Internet Explorer, System, Windows Power Shell и т.п. Наша следующая команда извлекает записи из системного журнала, которые имеют тип “Error”
:
PS C:\> $bad = get-eventlog “System” | where-object { $_.EntryType –eq “Error” }
Мы используем команду get-eventlog
, которой указываем параметр “System”
для извлечения только системных записей, — мы могли бы более четко задать это, применив параметр logName
. Содержимое переменной $bad
передается на вход команде where-object
для фильтрации только интересующих нас записей. В качестве аргументов команды where-object
мы указываем на то, что ищем только записи, у которых свойство EntryType
равно “Error”
.
Мы завершаем исследование системного журнала выводом на экран пяти последних записей об ошибках, используя для этого команду select-object
с параметром –last
:
PS C:\> $bad | select-object –last 5
Установка обновлений Windows через Powershell
- Качаем модуль Windows Update PowerShell Module с сайта microsoft.
- Распаковываем архив в папку %WINDIR%\System32\WindowsPowerShell\v1.0\Modules
- Если еще не разрешали запускать локальные скрипты, то разрешаем это делать: «Set-ExecutionPolicy RemoteSigned».
- Импортируем скачанный модуль командой: «Import-Module PSWindowsUpdate»
- Готово. Теперь можно использовать команды:
- Посмотреть список доступных обновлений: Get-WUInstall -ListOnly
- Установить все обновления не спрашивая подтверждения: Get-WUInstall -AcceptAll
- Установить все обновления не спрашивая подтверждения и отложить перезагрузку: Get-WUInstall -AcceptAll -IgnoreReboot
- Установить определенные обновления зная их номер: «Get-WUInstall -KBArticleID KB3066441, KB3078676 -AcceptAll -IgnoreReboot» — теперь не нужно заходить на сайт microsoft и выкачивать их вручную
- Подробная справка по модулю: get-help Get-WUInstall -detailed
- Посмотреть список доступных обновлений исключив категорию «Language packs», заголовки «Skype» и обновление KB3012973: Get-WUInstall -NotCategory «Language packs» -NotTitle Skype -NotKBArticleID KB3012973 -ListOnly
- Установить обновления исключив категорию «Language packs», заголовки «Skype» и обновление KB3012973: Get-WUInstall -NotCategory «Language packs» -NotTitle Skype -NotKBArticleID KB3012973 -AcceptAll -IgnoreReboot
Краткий обзор программы
По сути, это усовершенствованная версия MS-DOS – старейшей дисковой операционной системы от компании Microsoft, выпущенной еще в середине 80-х гг. прошлого века. Она содержала в себе приложения, с функцией интерпретаторов, далеких от совершенства, умевших задавать несколько простых команд.
Разработчики неоднократно пытались компенсировать недостатки MS-DOS дополнительными компонентами для запуска сценария, такими как MS Script Host, с языками вроде Jscript, но это решало проблему лишь частично. В 2003 г. началась разработка программы способной заменить старую оболочку, получившую название Monad, известную сейчас как PowerShell. Хотя его впервые запустили в конце 2006 года и включили в ОС Windows XP, в завершенном виде он вышел только спустя 10 лет непрерывных доработок, в 2016 г. когда получил открытый исходный код. PowerShell широко используется в Windows 7, 8 и 10.
Оболочка Windows PowerShell
Данная оболочка имеет те же возможности что и командная строка такие как: хранение истории выполнения команд, настройка внешнего вида оболочки, завершение выполнения команд сочетанием клавиш Ctrl+C, а также много других возможностей, которых нет в оболочке командной строки, например такая замечательная возможность как «подсветка синтаксиса» (появилась в PowerShell 5.0).
Запустить оболочку PowerShell можно несколькими способами, например:
- Из командной строки, набрав PowerShell;
- Через диалоговое окно «Выполнить» (сочетание клавиш Win+R), также набрав PowerShell;
- В Windows 7 — Пуск->Все программы ->Стандартные ->Windows PowerShell -> Windows PowerShell;
- В Windows 8.1 или Windows Server 2012 R2 — Пуск->Все программы ->Служебные ->Windows PowerShell;
- В Windows 10 или Windows Server 2016 — Пуск->Все программы -> Каталог Windows PowerShell (в группе W) -> Windows PowerShell.
Пример запуска PowerShell в Windows Server 2016
Скриншот оболочки PowerShell в Windows Server 2016
Additional Resources
Useful PowerShell Scripts
Manage AD users
- List all user accounts on a Windows system
- Create new Active Directory users
- Discover new AD users
- Report on AD group membership
- Find disabled AD users
- List expired AD user accounts
- Find locked out AD user accounts
- Get notified about expired passwords
- Configure user passwords to never expire in Office 365
Manage AD computers
- Create, delete, rename, disable and join computers in AD
- List inactive computers in Active Directory
Manage groups and OUs
- Get notified of local administrator group changes
- Add and remove AD groups and objects in groups
- Manage OUs and their objects
Manage other things
- Monitor event logs
- Query event logs
- Forward event logs in Windows Server 2008
- Manage file system access control lists (ACLs)
- Streamline file management
Get more advanced with PowerShell
- Know when to use Windows PowerShell and when to use the command prompt
- Master keyboard shortcuts for system administrators
- Learn how to automate PowerShell scripts with Task Scheduler
Написание и запуск скриптов
Скрипты сохраняются в виде файлов с расширением .ps1 . Несмотря на то, что PowerShell уже давно является нативной частью ОС Windows, вы не сможете запустить его скрипты простым двойным щелчком. Для этого надо кликнуть правой кнопкой по скрипту и выбрать «Запустить в PowerShell».
Также существуют системные политики, ограничивающие выполнение скриптов. Можно проверить текущие параметры политики, введя команду Get-ExecutionPolicy . Результатом будет одно из следующих значений:
- Restricted — выполнение скриптов запрещено. Стандартная конфигурация;
- AllSigned — можно запускать скрипты, подписанные доверенным разработчиком; перед запуском скрипта PowerShell запросит у вас подтверждение;
- RemoteSigned — можно запускать собственные скрипты или те, что подписаны доверенным разработчиком;
- Unrestricted — можно запускать любые скрипты.
Для начала работы необходимо изменить настройку политики запуска на RemoteSigned, используя команду Set-ExecutionPolicy :
Командлеты
Командлеты — это команды с предопределённой функцией, подобные условным операторам в языках программирования. У них есть несколько ключевых особенностей:
- существуют системные, пользовательские и опциональные командлеты;
- результатом выполнения командлета будет объект или массив объектов;
- командлеты могут обрабатывать данные и передавать их другим командлетам с помощью конвейеров;
- командлеты нечувствительны к регистру, так что нет никакой разницы между Get-ADUser , get-aduser и gEt-AdUsEr ;
- в качестве разделителя используется символ ; .
Каждый командлет содержит в себе глагол и существительное, разделяемые дефисом. Например:
- Get-Process — отобразить текущие процессы, запущенные на компьютере;
- Get-Service — отобразить список служб и их статус;
- Get-Content — отобразить содержимое указанного файла, например Get-Content C:WindowsSystem32driversetchosts .
При необходимости список всех доступных командлетов можно вывести с помощью Get-Help-Category:
Также можно создавать и свои собственные командлеты.
Параметры
У каждого командлета есть несколько параметров, определяющих его работу. PowerShell ISE автоматически предлагает все доступные параметры с отображением их типа. Например, Get-Service-NameW* выводит список служб, у которых имя начинается с W . Если вы забыли, какие параметры у введённого командлета, воспользуйтесь Get-Member . Например, Get-Process | Get-Member :
Если вы не нашли того, что нужно, или не уверены в том, как правильно задаются параметры, можно даже запросить примеры с помощью параметра -Examples :
Некоторые командлеты также могут вызываться с помощью алиасов, например вместо Get-Help можно просто написать Help .
При написании больших скриптов или коллективной разработке можно пользоваться комментариями. Каждый комментарий начинается с символа # , а блок комментариев ограничивается комбинациями символов и #> в начале и в конце соответственно.
Конвейер
PowerShell позволяет осуществлять обмен данными между командлетами с помощью конвейера. Например:
- GetService | SortObject -property Status — сортировка запущенных служб по статусу;
- “Hello World!” | Out-File C:ps est.txt — запись текста в файл.
Можно использовать несколько конвейеров. Например, следующий скрипт выводит список имён всех служб за исключением остановленных:
Get-Service | WHERE <$_.status -eq “Running”>| SELECT displayname
Полезные командлеты Windows PowerShell
В данном разделе я перечислю командлеты PowerShell, которые Вы точно будете использовать.
- Get-Help – показывает справку по командлету, функции и общую справку по Windows PowerShell. Справка бывает нескольких типов: краткая, детальная, полная и вывод только примеров;
- Update-Help — загружает и устанавливает новые файлы справки, т.е. обновление справки;
- Get-Command – командлет поиска нужной команды, можно искать как по глаголу, так и по существительному, также возможно использование маски, если Вы не знаете точное наименование глагола или существительного;
- Get-Alias – показывает псевдонимы, все или конкретной команды;
- Get-PSDrive – показывает подключенные диски;
- Get-Member – выводит свойства и методы, которые есть у объекта;
- Get-WindowsFeature – выводит сведения о доступных ролях и компонентах сервера;
- Install-WindowsFeature (эквивалентен Add-WindowsFeature) — устанавливает роли или компоненты на указанный сервер;
- Uninstall-WindowsFeature (эквивалентен Remove-WindowsFeature) – удаляет роли или компонента сервера;
- Get-History — возвращает список команд, введенных в ходе текущей сессии.
Format-Table
С виду вывод Format-Table и Select-Object кажется похожим, но все же у них разное назначение. Select-Object может использоваться как для форматирования так и для фильтрации объектов. В то время как Format-Table позволяет только лишь редактировать вывод в консоль. Для этой задачи он обладает бОльшими возможностями.
Некоторые полезные ключи:
- -AutoSize, выравнивает ширину колонок в выводе по самому широкому значению в колонке;
- -GroupBy, группирует вывод по заданному свойству в отдельные таблицы;
- -RepeatHeader, повторяет заголовки колонок на каждом экране консоли при прокрутке;
- -HideTableHeaders, скрывает названия колонок из вывода;
- -Wrap, выполняет перенос значения свойства на новую строку, если оно не умещается на одной строке. В противном случае значения обрезаются по ширине колонки
Где найти PowerShell?
Самый простой способ найти PowerShell в Windows 10 — ввести PowerShell в строке поиска, как показано на рис. 1-1.
Обратите внимание, что на рис. 1-1 показаны четыре разных ярлыка для PowerShell
Компьютер, используемый в демонстрационных целях в этой книге, работает под управлением 64-разрядной версии Windows 10, поэтому существует 64-разрядная версия консоли PowerShell и PowerShell ISE (интегрированной среды сценариев) и 32-разрядная версия каждой из них (обозначена суффиксом (x86) на ярлыках). Если вы работаете с 32-разрядной версией Windows 10, у вас будет только два ярлыка. У этих элементов нет суффикса (x86), но они являются 32-разрядными версиями. Если у вас установлена 64-разрядная операционная система, рекомендуется запускать 64-разрядную версию PowerShell, только если вас нет особой причины для запуска 32-разрядной версии.
Сведения о запуске PowerShell в других версиях Windows см. в статье Запуск Windows PowerShell.
Что такое Windows PowerShell?
Прежде чем мы углубимся в PowerShell, давайте сначала ответим на другой вопрос: «Что такое оболочка?»
Оболочка — это компьютерная программа, которая принимает команды с клавиатуры, интерпретирует их и передает их операционной системе для выполнения. По сути, он действует как интерфейс между вами и операционной системой. Он может быть основан на графическом интерфейсе пользователя (GUI ) или может быть построен поверх CLI (интерфейса командной строки).
Хотя оболочка существует с момента выпуска операционной системы Multics в 1969 году, Windows представила ее версию, Shell, в ноябре 1985 года. Это была базовая оболочка, которая была полезна для управления файлами и называлась MS-DOS Executive. Затем последовала разработка этой базовой оболочки, но всегда требовалось что-то более мощное.
Программы для Windows, мобильные приложения, игры — ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале — Подписывайтесь:)
Ранее в истории Windows пользователи прибегали к использованию различных инструментов для системного администрирования и автоматизации. В 2006 году в качестве решения было представлено серьезное усовершенствование концепции оболочки: Windows PowerShell.
Windows PowerShell позволяет выполнять различные операции, от автоматизации повторяющихся задач, сетевого администрирования и т. Д. До задач, требующих большего внимания и творчества (например, публикация контента веб-сайтов, проектирование и т. Д.).
Это не только экономит ваше время, но также дает вам больший контроль над операционной системой и ее процессами.
Что такое командлет PowerShell?
Теперь, когда вы знакомы с PowerShell, давайте рассмотрим один из наиболее важных аспектов PowerShell: командлет .
Командлеты (произносится как command-let) — это легкие и эффективные команды Windows PowerShell. Они существуют как строительные блоки, которые вы можете использовать для выполнения определенных действий, таких как копирование и перемещение файлов, или как часть более крупного и более сложного сценария PowerShell.
Get-Help Командлет, например, является наиболее полезным Командлет как это позволяет увидеть , что делает конкретный Командлет, посмотрите на его параметры, и показать различные способы , в которых используется командлет.
Подобно Get-Help , Get-Command — это еще один командлет, который можно использовать для устранения различных проблем из оболочки. В частности, он показывает все команды, установленные в вашей системе. Отображаемые команды включают командлеты, функции, псевдонимы, фильтры, сценарии и приложения. При использовании с параметрами он покажет вам все конкретные команды, связанные с этим параметром.
Например, следующая команда захватит команды всех типов, доступных на вашем локальном компьютере, и отобразит их:
С другой стороны, Get-Command с параметром ListImported будет получать команды только из текущих сеансов.
Как установить PowerShell 7 с пакетом MSI
PowerShell 7 доступен для Windows, macOS и Linux. Мы покажем вам, как установить его на Windows 10.
Первый метод, который мы рассмотрим, использует MSI-файл для установки PowerShell. Пакеты MSI работают почти идентично файлу EXE и позволяют устанавливать программу с использованием графического интерфейса пользователя. Это метод установки, который использует только необходимые и ключевые файлы. Все, что вам нужно сделать, — это дважды щёлкнуть по файлу, чтобы запустить мастер установки.
Примечание. PowerShell 7 устанавливается и работает параллельно с Windows PowerShell 5.1, которая поставляется с Windows 10, но заменяет PowerShell Core 6.x. Если вам нужно запустить PowerShell 6 параллельно с PowerShell 7, вам необходимо установить его через ZIP-пакет.
Чтобы загрузить пакет, запустите браузер и перейдите на страницу релизов PowerShell Github. Прокрутите вниз до раздела «Assets» и найдите там файл MSI (PowerShell-*-win-x64.msi), чтобы загрузить его.
Обязательно выберите правильный пакет для вашей версии Windows, x64 для 64-разрядных или x86 для 32-разрядных систем.
При появлении запроса выберите место для загрузки и нажмите «Сохранить», чтобы начать загрузку.
После завершения загрузки перейдите в папку, в которой находится файл, и дважды щёлкните его, чтобы запустить установку.
Работа с сетью в Windows PowerShell
Для администрирования сети в Windows PowerShell существуют такие командлеты как:
- Disable-NetAdapter – командлет отключает сетевой адаптер;
- Enable-NetAdapter – данный командлет включает сетевой адаптер;
- Rename-NetAdapter — переименовывает сетевой адаптер;
- Restart-NetAdapter — перезапускает сетевой адаптер;
- Get-NetIPAddress – выводит информацию о конфигурации IP-адреса;
- Set-NetIPAddress — изменяет конфигурацию IP-адреса;
- New-NetIPAddress — создает и настраивает IP-адрес;
- Remove-NetIPAddress — удаляет IP-адрес и его конфигурацию;
- Get-NetRoute — выводит таблицу маршрутизации IP;
- Set-NetRoute — изменяет таблицу маршрутизации IP;
- New-NetRoute — создает запись в таблице маршрутизации IP;
- Remove-NetRoute — удаляет одну или несколько записей (IP маршрутов
) из таблицы маршрутизации IP; - Get-NetIPv4Protocol — выводит информацию о конфигурации протокола IPv4;
- Get-NetIPv6Protocol — выводит информацию о конфигурации протокола IPv6;
- Get-NetIPInterface — выводит информацию о свойствах интерфейса IP;
- Get-NetTCPSetting — показывает информацию о настройках и конфигурации TCP;
- Test-Connection – командлет посылает ICMP пакеты к одному или нескольким компьютерам, т.е. «пингует
» компьютеры.
Фоновое исполнение заданий
В Windows PowerShell есть возможность фонового исполнения заданий, она представляет собой механизм, с помощью которого можно запустить на выполнение команду (например, которая долго выполняется) в фоновом режиме, т.е. после запуска Вы возвращаетесь в текущую сессию и можете продолжить работу, не дожидаясь окончания работы команды. Данная возможность Вам понадобится тогда, когда у Вас возникнет необходимость запустить команду, работа которой занимает достаточно продолжительное время, а как Вы знаете, в течение этого времени сессия оболочки PowerShell блокируется до завершения работы команды, а Вам нужно продолжать работать.
Всеми заданиями, которые запущенны в фоновом режиме, Вы можете управлять, например, посмотреть список заданий, остановить работу задания, удалить задание, и, конечно же, посмотреть результат работы задания.
В Windows PowerShell для работы с фоновыми заданиями есть следующие командлеты:
- Start-Job – запустить фоновую задачу;
- Stop-Job – остановить фоновую задачу
- Get-Job – посмотреть список фоновых задач;
- Receive-Job – посмотреть результат выполнения фоновой задачи;
- Remove-Job – удалить фоновую задачу;
- Wait-Job – перевести фоновую задачу на передний план, для того чтобы дожидаться ее окончания.
Для запуска в фоновом режиме необходимо написать команду Start-Job, а в фигурных скобках {} команду или набор команд, которые необходимо выполнить в фоновом режиме.
Например, давайте запустим какую-нибудь задачу (показать список служб) в фоновом режиме, затем посмотрим на список фоновых заданий и выведем на экран результат работы нашего задания (т.е. список служб).
Запуск задачи в фоновом режиме
1 | Start-Job {Get-Service} |
Смотрим на список задач запущенных в фоновом режиме
1 | Get-Job |
Отображаем результат работы задания Job1
1 | Receive-Job Job1 |
Как видим, у нас появилась задача со статусом «Completed», т.е. она уже выполнилась (просто Get-Service отрабатывает быстро).
Для того чтобы посмотреть результат работы фоновой задачи, т.е. командлета Get-Service, мы выполнили команду Receive-Job и передали ей имя задания (можно и значение идентификатора). В результате у нас отобразился список служб.