Команды для работы с данными
PowerShell использует класс System.Management.Automation.VerbsData для определения действий, которые применяются к обработке данных. В следующей таблице перечислено большинство определенных команд.
Имя команды (псевдоним) | Действие | Неподходящие синонимы |
---|---|---|
Backup (ba) | Сохраняет данные путем репликации. | Save, Burn, Replicate, Sync |
Checkpoint (ch) | Создает моментальный снимок текущего состояния данных или их конфигурации. | Поиск различий |
Compare (cr) | Сравнивает данные из одного ресурса с данными из другого. | Поиск различий |
Compress (cm) | Сжимает данные ресурса. Образует пару с командой . | Компактный |
Convert (cv) | Изменяет данные из одного представления в другое, если командлет поддерживает двунаправленное преобразование или преобразование между несколькими типами данных. | Change, Resize, Resample |
ConvertFrom (cf) | Преобразует один первичный тип входных данных (существительное в командлете указывает входные данные) в один или несколько поддерживаемых типов выходных данных. | Export, Output, Out |
ConvertTo (ct) | Преобразует один или несколько типов входных данных в основной тип выходных данных (существительное в командлете указывает тип выходных данных). | Import, Input, In |
Dismount (dm) | Отключает именованную сущность от расположения. Эта команда образует пару с командой . | Unmount, Unlink |
Edit (ed) | Изменяет существующие данные путем добавления или удаления содержимого. | Change, Update, Modify |
Expand (en) | Восстанавливает сжатые данные ресурса до исходного состояния. Эта команда образует пару с командой . | Explode, Uncompress |
Export (ep) | Инкапсулирует первичные входные данные в постоянное хранилище данных, например файл, или в формат обмена. Эта команда образует пару с командой . | Extract, Backup |
Import (ip) | Создает ресурс на основе данных, хранящихся в постоянном хранилище данных (например, в файле) или в формате обмена. Например, командлет импортирует данные из файла с разделителями-запятыми (CSV) в объекты, которые могут использоваться другими командлетами. Эта команда образует пару с командой . | BulkLoad, Load |
Initialize (in) | Подготавливает ресурс для использования и задает для него состояние по умолчанию. | Erase, Init, Renew, Rebuild, Reinitialize, Setup |
Limit (l) | Применяет ограничения к ресурсу. | Quota |
Merge (mg) | Создает один ресурс из нескольких. | Combine, Join |
Mount (mt) | Подключает именованную сущность к расположению. Эта команда образует пару с командой . | Подключение |
Out (o) | Отправляет данные из среды. Например, командлет отправляет данные на принтер. | |
Publish (pb) | Делает ресурс доступным для других пользователей. Эта команда образует пару с командой . | Deploy, Release, Install |
Restore (rr) | Задает для ресурса предопределенное состояние, например состояние, заданное . Например, командлет запускает восстановление системы на локальном компьютере. | Repair, Return, Undo, Fix |
Save (sv) | Сохраняет данные, чтобы избежать их потери. | |
Sync (sy) | Гарантирует, что два ресурса или более находятся в одном и том же состоянии. | Replicate, Coerce, Match |
Unpublish (ub) | Делает ресурс недоступным для других пользователей. Эта команда образует пару с командой . | Uninstall, Revert, Hide |
Update (ud) | Обеспечивает актуальность ресурса для поддержания его состояния, точности, согласованности или соответствия требованиям. Например, командлет обновляет и добавляет файлы форматирования в текущую консоль PowerShell. | Refresh, Renew, Recalculate, Re-index |
Работа с Hyper-V
Для работы с Hyper-V в Windows PowerShell существует много командлетов, вот небольшой перечень:
- New-VM — создание новой виртуальной машины;
- Set-VM — настройка виртуальной машины;
- Start-VM — запуск виртуальной машины;
- Stop-VM — закрытие, выключение или сохранение виртуальной машины;
- Import-VM — импорт виртуальной машины из файла;
- Move-VM — перемещение виртуальной машины на новый Hyper-V хост;
- Remove-VM — удаление виртуальной машины;
- Rename-VM — переименование виртуальной машины;
- New-VHD — создание одного или нескольких новых виртуальных жестких дисков;
- Set-VHD – настройка виртуального жесткого диска;
- Test-VHD — тестирование виртуального жесткого диска на предмет обнаружения проблем, которые сделали бы его непригодным для использования;
- Add-VMDvdDrive — добавляет DVD диск к виртуальной машине;
- Remove-VMDvdDrive — удаляет DVD-диск из виртуальной машины;
- Add-VMHardDiskDrive — добавляет жесткий диск к виртуальной машине;
- Remove-VMHardDiskDrive — удаляет один или несколько виртуальных жестких дисков (VHD) из виртуальной машины;
- Add-VMNetworkAdapter — добавляет виртуальный сетевой адаптер на виртуальной машине;
- Remove-VMNetworkAdapter — удаляет один или несколько виртуальных сетевых адаптеров из виртуальной машины;
- Copy-VMFile — копирование файлов на виртуальную машину;
- Get-VMVideo – выводит информацию о настройках видео для виртуальных машин;
- Move-VMStorage — перемещение хранилища виртуальной машины.
Команды безопасности
PowerShell использует класс System.Management.Automation.VerbsSecurity для определения действий, которые применяются к безопасности. В следующей таблице перечислено большинство определенных команд.
Команда (псевдоним) | Действие | Неподходящие синонимы |
---|---|---|
Block (bl) | Ограничивает доступ к ресурсу. Эта команда образует пару с командой . | Prevent, Limit, Deny |
Grant (gr) | Разрешает доступ к ресурсу. Эта команда образует пару с командой . | Allow, Enable |
Protect (pt) | Защищает ресурс от атак или потери. Эта команда образует пару с командой . | Encrypt, Safeguard, Seal |
Revoke (rk) | Указывает действие, которое не разрешает доступ к ресурсу. Эта команда образует пару с командой . | Remove, Disable |
Unblock (ul) | Удаляет ограничения для ресурса. Эта команда образует пару с командой . | Clear, Allow |
Unprotect (up) | Удаляет меры защиты для ресурса, которые были добавлены, чтобы предотвратить атаку или потерю. Эта команда образует пару с командой . | Decrypt, Unseal |
Устранение проблем политики и предпочтений
В этом разделе обсуждаются проблемы удаленного взаимодействия, связанные с политиками и предпочтениями, заданными на локальном и удаленном компьютерах.
Изменение политики выполнения для 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.
PowerShellGet
PowerShellGet — это модуль PowerShell, который содержит команды для обнаружения, установки, публикации и обновления модулей PowerShell (и других артефактов) в репозиторий NuGet или из него. PowerShellGet поставляется с PowerShell версии 5.0 и выше. Он доступен в виде отдельного скачиваемого файла для PowerShell версии 3.0 и более поздних версий.
Корпорация Майкрософт размещает в Интернете репозиторий NuGet, который называется Коллекция PowerShell. Хотя этот репозиторий размещается Майкрософт, большинство модулей, которые в нем содержатся, пишутся не корпорацией. Любой код, полученный из коллекции PowerShell, необходимо тщательно проверить в изолированной тестовой среде, прежде чем считать его подходящим для использования в рабочей среде.
Многим компаниям понадобится разместить собственный внутренний репозиторий NuGet, где они могут публиковать только внутренние модули, а также модули, загруженные ими из других источников, после того как они проверят, что эти модули не являются вредоносными.
Используйте командлет , входящий в состав модуля PowerShellGet, чтобы найти модуль в коллекции PowerShell, который я написал, с именем MrToolkit.
При первом использовании одной из команд из модуля PowerShellGet вам будет предложено установить поставщик NuGet.
Чтобы установить модуль MrToolkit, передайте предыдущую команду в .
Так как коллекция PowerShell является недоверенным репозиторием, она предложит вам подтвердить установку модуля.
Команды для обмена данными
PowerShell использует класс System.Management.Automation.VerbsCommunications для определения действий, которые применяются к обмену данными. В следующей таблице перечислено большинство определенных команд.
Команда (псевдоним) | Действие | Неподходящие синонимы |
---|---|---|
Connect (cc) | Создает связь между источником и назначением. Эта команда образует пару с командой . | Join, Telnet |
Disconnect (dc) | Удаляет связь между источником и назначением. Эта команда образует пару с командой . | Break, Logoff |
Read (rd) | Получает сведения из источника. Эта команда образует пару с командой . | Acquire, Prompt, Get |
Receive (rc) | Принимает сведения, отправляемые из источника. Эта команда образует пару с командой . | Read, Accept, Peek |
Send (sd) | Доставляет сведения в место назначения. Эта команда образует пару с командой . | Put, Broadcast, Mail, Fax |
Write (wr) | Добавляет сведения в целевой объект. Эта команда образует пару с командой . | Put, Print |
Разделы справки выполнить команду на удаленном компьютере?
Чтобы выполнить команду на удаленном компьютере, используйте командлет.
Заключите команду в фигурные скобки ( ), чтобы сделать ее блоком сценария. Используйте параметр ScriptBlock аргумента для указания команды.
Параметр ComputerName параметра можно использовать для указания удаленного компьютера. Или можно создать постоянное подключение к удаленному компьютеру (сеанс), а затем использовать параметр Session из для выполнения команды в сеансе.
Например, следующие команды выполняют команду удаленно.
Чтобы прервать удаленную команду, введите CTRL + C. Запрос на прерывание передается на удаленный компьютер, где он завершает удаленную команду.
Дополнительные сведения об удаленных командах см. в разделе about_Remote и разделы справки по командлетам, поддерживающим удаленное взаимодействие.
Использование JEA с помощью неявного удаленного взаимодействия
PowerShell поддерживает неявную модель удаленного взаимодействия, где можно импортировать командлеты прокси-сервера с удаленного компьютера и работать с ними, как если бы они были локальными командами. Неявное удаленное взаимодействие описано в этой записи блога Hey, Scripting Guy! здесь.
Неявное удаленное взаимодействие полезно при работе с JEA, так как оно позволяет работать с командлетами JEA в полноязыковом режиме. Можно использовать заполнение нажатием клавиши TAB, переменные, работать с объектами и даже использовать локальные сценарии для автоматизации взаимодействия задач с конечной точкой JEA. При каждом выполнении команды прокси-сервера данные отправляются в конечную точку JEA на удаленном компьютере и выполняются там.
Неявное удаленное взаимодействие работает путем импорта командлетов из существующего сеанса PowerShell. При необходимости можно присваивать существительным каждого командлета прокси-сервера префикс в виде строки по своему выбору. Префикс позволяет отличать команды, предназначенные для удаленной системы. Создается временный модуль сценария, содержащий все команды прокси-сервера, который можно импортировать в течение локального сеанса PowerShell.
Важно!
В некоторых системах импорт всего сеанса JEA может быть невозможен из-за ограничений в командлетах JEA по умолчанию. Чтобы обойти эту проблему, импортируйте из сеанса JEA только необходимые команды, явно указав их имена в параметре . Данная проблема с импортом целых сеансов JEA на таких системах будет исправлена в будущем обновлении.
Если вам не удается импортировать сеанс JEA из-за ограничений JEA для параметров по умолчанию, можно выполнить указанные ниже шаги, чтобы отфильтровать стандартные команды из импортированного набора. Вы по-прежнему можете использовать такие команды, как . Просто во время сеанса JEA вы будете использовать локальную версию, установленную на компьютере, вместо импортированной из удаленного сеанса JEA.
Можно также сохранить командлеты, выполненные через прокси-сервер, из неявного удаленного взаимодействия с помощью Export-PSSession.
Дополнительные сведения о неявном удаленном взаимодействии см. в справочной документации по Import-PSSession и Import-Module.
Требования к операционной системе
Windows PowerShell 5.1
Windows PowerShell 5.1 выполняется в следующих версиях Windows: Для запуска Windows PowerShell 5.1 установите Windows Management Framework 5.1. Дополнительные сведения см. в статье Установка и настройка WMF 5.1.
Версия Windows | Требования к системе |
---|---|
Windows Server 2022 | Устанавливается по умолчанию |
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 11 | Устанавливается по умолчанию |
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 2022 | Более поздняя версия устанавливается по умолчанию |
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 11 | Более поздняя версия устанавливается по умолчанию |
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 |
Справка об обновлении
Чтобы получить последнюю информацию для модуля Configuration Manager PowerShell, используйте командлет Update-Help. Это содержимое то же, что и то, что опубликовано в docs.microsoft.com для модуля ConfigurationManager.
Важно!
Из-за изменения структуры и публикации обновляемого контента с выпуском версии 2103 не используйте Update-Help на сайте версии 2010. Обновление сайта до версии 2103 или более поздней версии, а затем обновление содержимого локальной справки.
Дополнительные сведения см. в заметках о выпуске
Компьютер, на котором вы запустите этот комлет, нуждается в доступе к Интернету, в частности . Затем запустите следующую команду из сеанса PowerShell с повышенными уровнями:
После обновления справки по диспетчеру конфигурации вы можете получить справку о этих командых с помощью команды Get-Help. Например:
Дополнительные сведения см. в следующем блоге PowerShell: You’ve got Help!.
Объявление параметров как позиционированного или именованного
Командлет должен задавать каждый параметр как либо Позиционированный, либо именованный параметр. Оба типа параметров принимают одиночные аргументы, несколько аргументов, разделенных запятыми, и логические параметры. Логический параметр, также называемый параметром, обрабатывает только логические параметры. Параметр используется для определения наличия параметра. Рекомендуемое значение по умолчанию — .
Образец командлета определяет параметр как параметр с положением
0. Это означает, что первый аргумент, вводимый пользователем в командной строке, автоматически вставляется для этого параметра. Если необходимо определить именованный параметр, для которого пользователь должен указать имя параметра из командной строки, оставьте ключевое слово за пределами объявления атрибута.
Примечание
Если параметры не должны быть именованы, рекомендуется использовать наиболее часто используемые параметры, чтобы пользователи не могли вводить имя параметра.
Объявление параметров
Параметр командлета позволяет пользователю предоставлять входные данные для командлета. В следующем примере и — это имена командлетов конвейера, а — это параметр для командлета. Параметр имеет аргумент «свойство».
PS> Get-proc; -MemberType, свойство
Чтобы объявить параметры для командлета, необходимо сначала определить свойства, представляющие параметры. в командлете единственным параметром является , который в данном случае представляет имя объекта платформа .NET Framework процесса для извлечения. Поэтому класс командлета определяет свойство типа String, которое принимает массив имен.
Ниже приведено объявление параметра для параметра командлета.
чтобы сообщить среде выполнения Windows PowerShell, что это свойство является параметром, к определению свойства добавляется атрибут System. Management. Automation. параметераттрибуте . Базовый синтаксис для объявления этого атрибута — .
Примечание
Параметр должен быть явно помечен как public. параметры, которые не помечены как открытые по умолчанию, являются внутренними и не обнаруживаются средой выполнения Windows PowerShell.
Этот командлет использует массив строк для параметра. Если это возможно, командлет также должен определить параметр как массив, так как это позволяет командлету принимать более одного элемента.
Вопросы, которые следует помнить об определениях параметров
-
предопределенные имена параметров Windows PowerShell и типы данных следует использовать повторно, чтобы убедиться, что командлет совместим с командлетами Windows PowerShell. Например, если все командлеты используют предопределенное имя параметра для определения ресурса, пользователь сможет легко понять значение параметра, независимо от того, какой командлет используется. В сущности, имена параметров соответствуют тем же правилам, которые используются для имен переменных в общеязыковой среде выполнения (CLR). Дополнительные сведения об именовании параметров см. в разделе имена параметров командлета.
-
Windows PowerShell резервирует несколько имен параметров для обеспечения единообразного взаимодействия с пользователем. Не используйте следующие имена параметров: , , , , , , , и . Кроме того, следующие псевдонимы для этих имен параметров зарезервированы: , , ,, и .
-
— Это простое и общее имя параметра, рекомендуемое для использования в командлетах. Лучше выбрать имя параметра, которое отличается от сложного имени, уникального для конкретного командлета, и трудно запомнить.
-
параметры не учитывают регистр в Windows PowerShell, хотя по умолчанию оболочка сохраняет регистр. Чувствительность к регистру аргументов зависит от операции командлета. Аргументы передаются в параметр, как указано в командной строке.
-
Примеры других объявлений параметров см. в разделе параметры командлета.
Что способствовало появлению Windows PowerShell?
До появления PowerShell существовали (и существуют) следующие инструменты для автоматизации и администрирования сервисов: командная строка Windows и Windows Script Host. Но у этих технологий есть недостатки.
У командной строки Windows есть и возможность выполнять какие-то административные задачи и возможность записать алгоритм действий, сохранив его в виде скрипта (bat-файла), при этом можно использовать некие элементы программирования, например, использовать переменные, условные конструкции и даже что-то вроде циклов.
Большинство программных продуктов имеет консольный интерфейс, т.е. мы можем управлять программой, используя командную строку, при этом экономя ресурсы за счет отсутствия затрат на работу графического интерфейса. Компания Microsoft для серверной операционной системы Windows Server даже выпускает редакции без графического интерфейса (Server Core, в Windows Server 2016 даже есть Nano Server), но всего этого недостаточно, так как возможности командной строки ограничены, т.е. написать какую-то сложную логику для автоматизации чего-либо мы не сможем, а если и сможем, то на это нам потребуется время и знания.
Также недостатком командной строки является то, что для полноценного управления сервером мы используем различные консольные утилиты программных продуктов, и поэтому использовать командную строку для администрирования на самом деле сложно, с точки зрения того, что у всех этих утилит разный синтаксис, параметры, методы использования и для того чтобы выполнять типовые задачи, т.е. каждодневные, приходиться держать все это в памяти, а для выполнения нетиповых задач приходиться сначала почитать справку или документацию.
Технология Windows Script Host позволяет выполнять все административные задачи, что и командная строка, включая их автоматизацию путем написания WSH скриптов, но здесь мы уже можем использовать полноценные языки программирования (VBScript и JScript), т.е. можно реализовывать сложную логику и алгоритмы. К тому же с помощью WSH мы управляем программными продуктами через объектный интерфейс, другими словами Windows Script Host намного «круче» чем командная строка. Но данная технология также не стала тем идеальным инструментом администрирования и автоматизации этого администрирования для системных администраторов, так как Windows Script Host требовал знаний вышеперечисленных языков программирования, что для системных администраторов на самом деле лишнее. Администраторам нужно всего лишь простой инструмент администрирования с возможностью запрограммировать какие-то действия, а углубляться в объектные модели программных продуктов на языках программирования VBScript и JScript им не хочется.
В итоге компании Microsoft необходимо было разработать такой инструмент администрирования для системных администраторов, который бы на 100 процентов удовлетворял все потребности сисадминов как в плане возможностей администрирования и автоматизации, так и в плане удобства и простоты использования, таким образом, появился Windows PowerShell.
Фоновое исполнение заданий
В Windows PowerShell есть возможность фонового исполнения заданий, она представляет собой механизм, с помощью которого можно запустить на выполнение команду (например, которая долго выполняется) в фоновом режиме, т.е. после запуска Вы возвращаетесь в текущую сессию и можете продолжить работу, не дожидаясь окончания работы команды. Данная возможность Вам понадобится тогда, когда у Вас возникнет необходимость запустить команду, работа которой занимает достаточно продолжительное время, а как Вы знаете, в течение этого времени сессия оболочки PowerShell блокируется до завершения работы команды, а Вам нужно продолжать работать.
Всеми заданиями, которые запущенны в фоновом режиме, Вы можете управлять, например, посмотреть список заданий, остановить работу задания, удалить задание, и, конечно же, посмотреть результат работы задания.
В Windows PowerShell для работы с фоновыми заданиями есть следующие командлеты:
- Start-Job – запустить фоновую задачу;
- Stop-Job – остановить фоновую задачу
- Get-Job – посмотреть список фоновых задач;
- Receive-Job – посмотреть результат выполнения фоновой задачи;
- Remove-Job – удалить фоновую задачу;
- Wait-Job – перевести фоновую задачу на передний план, для того чтобы дожидаться ее окончания.
Для запуска в фоновом режиме необходимо написать команду Start-Job, а в фигурных скобках {} команду или набор команд, которые необходимо выполнить в фоновом режиме.
Например, давайте запустим какую-нибудь задачу (показать список служб) в фоновом режиме, затем посмотрим на список фоновых заданий и выведем на экран результат работы нашего задания (т.е. список служб).
Запуск задачи в фоновом режиме
Start-Job {Get-Service}
1 | Start-Job{Get-Service} |
Смотрим на список задач запущенных в фоновом режиме
Get-Job
1 | Get-Job |
Отображаем результат работы задания Job1
Receive-Job Job1
1 | Receive-Job Job1 |
Как видим, у нас появилась задача со статусом «Completed», т.е. она уже выполнилась (просто Get-Service отрабатывает быстро).
Для того чтобы посмотреть результат работы фоновой задачи, т.е. командлета Get-Service, мы выполнили команду Receive-Job и передали ей имя задания (можно и значение идентификатора). В результате у нас отобразился список служб.
Подробное описание
Конвейер — это серия команд, Соединенных операторами конвейера ( ) (ASCII 124). Каждый оператор конвейера отправляет результаты предыдущей команды следующей команде.
Выходные данные первой команды можно отправить для обработки в качестве входных данных во вторую команду. И эти выходные данные можно отправить в еще одну команду. Результатом является сложная цепочка команд или конвейер , состоящая из ряда простых команд.
Например,
В этом примере объекты, порождаемые, отправляются в .
обрабатывает объекты и отправляет их в . обрабатывает объекты и отправляет их по конвейеру. Так как в конвейере больше нет команд, результаты отображаются в консоли.
В конвейере команды обрабатываются в порядке слева направо. Обработка обрабатывается как одна операция, а выходные данные отображаются по мере их создания.
Вот простой пример. следующая команда возвращает Блокнот процесс, а затем останавливает его.
Например,
первая команда использует командлет для получения объекта, представляющего процесс Блокнот. он использует оператор конвейера ( ) для отправки объекта process в командлет, который останавливает процесс Блокнот
Обратите внимание, что у команды нет параметра Name или ID для указания процесса, так как указанный процесс отправляется через конвейер
Этот пример конвейера получает текстовые файлы в текущем каталоге, выбирает только те файлы, которые имеют длину более 10 000 байт, сортирует их по длине и отображает имя и длину каждого файла в таблице.
Этот конвейер состоит из четырех команд в указанном порядке. На следующем рисунке показаны выходные данные каждой команды, которые передаются в следующую команду конвейера.
Работа с сетью в 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 пакеты к одному или нескольким компьютерам, т.е. «пингует» компьютеры.
Командлеты PowerShell для удаленного управления
С помощью Windows PowerShell можно выполнять команды не только на локальном компьютере, но и на одном или даже на нескольких удаленных компьютерах.
- Enter-PSSession — запускает интерактивный сеанс с удаленным компьютером;
- Exit-PSSession — завершает интерактивный сеанс с удаленным компьютером;
- New-PSSession — создает постоянное подключение к локальному или удаленному компьютеру;
- Remove-PSSession — закрывает один или несколько сеансов Windows PowerShell;
- Disconnect-PSSession — отсоединяется от сеанса;
- Connect-PSSession — подключается к отключенным сеансам;
- Get-PSSession — получает сеансы Windows PowerShell на локальных и удаленных компьютерах;
- Invoke-Command — выполняет команды на локальном и удаленных компьютерах.
Исследование ошибок конвейера
Если PowerShell не может связать переданный объект с параметром командлета получения, команда завершается ошибкой.
В следующем примере мы пытаемся переместить запись реестра из одного раздела реестра в другой. Командлет возвращает путь назначения, который затем передается в командлет. Команда задает текущий путь и имя перемещаемой записи реестра.
Команда завершается ошибкой, и PowerShell выводит следующее сообщение об ошибке:
Для изучения используйте командлет для трассировки компонента привязки параметров PowerShell. В следующем примере выполняется трассировка привязки параметра во время выполнения конвейера. Параметр PSHost отображает результаты трассировки в консоли, а параметр FilePath отправляет результаты трассировки в файл для последующей ссылки.
Результаты трассировки имеют длину, но они показывают значения, привязанные к командлету, а затем именованные значения, привязанные к командлету.
Наконец, он показывает, что попытка привязки пути к параметру назначения не удалась.
Используйте командлет для просмотра атрибутов целевого параметра.
Результаты показывают, что назначение принимает только входные данные конвейера «по имени свойства». Таким образом, объект последовательного объекта должен иметь свойство с именем Destination.
Используйте для просмотра свойств объекта, поступающих из .
Выходные данные показывают, что элемент является объектом Microsoft. Win32. RegistryKey , который не имеет целевого свойства. Это объясняет, почему команда завершилась ошибкой.
Параметр path принимает входные данные конвейера по имени или по значению.
Чтобы исправить эту команду, необходимо указать назначение в командлете и использовать для получения пути к элементу, который нужно переместить.
Например,