Powershell: используем invoke-command для запуска команд/скриптов на удаленных компьютерах

Подробное описание

PowerShell защищает доступ к переменным, псевдонимам, функциям и дискам PowerShell (Псдривес), ограничивая место для чтения и изменения. PowerShell использует правила области, чтобы предотвратить случайное изменение элемента, который не должен изменяться.

Ниже приведены основные правила области.

  • Области могут быть вложенными. Внешняя область называется родительской областью. Все вложенные области являются дочерними областями этого родителя.

  • Элемент отображается в области, в которой он был создан, и во всех дочерних областях, если вы явно не сделаете его частным. Вы можете разместить переменные, псевдонимы, функции или диски PowerShell в одной или нескольких областях.

  • Элемент, созданный в области, может быть изменен только в той области, в которой она была создана, если только вы явно не указали другую область.

При создании элемента в области и его имени вместе с элементом в другой области исходный элемент может быть скрыт под новым элементом, но не переопределен или не изменен.

Другие переменные среды, используемые PowerShell

Сведения о пути

  • пасекст

    переменная содержит список расширений файлов, которые Windows рассматриваются как исполняемые файлы. Когда файл скрипта с одним из перечисленных расширений выполняется из PowerShell, сценарий выполняется в текущей консоли или сеансе терминала. Если расширение файла отсутствует в списке, сценарий выполняется в новом сеансе консоли.

    Чтобы обеспечить выполнение скриптов для другого языка сценариев в текущем сеансе консоли, добавьте расширение файла, используемое языком сценариев. Например, чтобы выполнить скрипты Python в текущей консоли, добавьте расширение в переменную среды. для Windows поддержки расширения в качестве исполняемого файла необходимо зарегистрировать расширение файла с помощью команд и командной оболочки CMD. PowerShell не имеет прямого метода для регистрации обработчика файлов. Дополнительные сведения см. в документации по команде ftype .

    Сценарии PowerShell всегда запускаются в текущем сеансе консоли. Добавлять расширение не требуется .

  • Переменные XDG

    на платформах, отличных от Windows, PowerShell использует следующие переменные среды XDG, как определено в спецификации базового каталога XDG.

    • XDG_CONFIG_HOME
    • XDG_DATA_HOME
    • XDG_CACHE_HOME

Функции терминала

Начиная с PowerShell 7,2, можно использовать следующие переменные среды для управления функциями виртуальных терминалов, такими как escape-последовательности ANSI, которые выделяют выходные данные. Поддержку escape-последовательностей ANSI можно отключить с помощью переменных среды TERM или NO_COLOR.

  • ТЕРМИН

    Следующие значения изменяют поведение следующим образом:

    • -Наборы
    • -Наборы
    • -Наборы
  • NO_COLOR

    Если параметр существует, то устанавливается в виде обычного текста. Дополнительные сведения о переменной среды NO_COLOR см. в разделе https://no-color.org/ .

Параллельное выполнение

Одним из преимуществ рабочих процессов Windows PowerShell является возможность выполнять набор команд параллельно, а не последовательно, как это делается в стандартном скрипте. Это особенно полезно в модулях Runbook, так как они могут выполнять несколько действий, требующих значительного времени. Например, модуль Runbook может выполнять подготовку группы виртуальных машин. Вместо выполнения процедур подготовки последовательно действия могут выполняться одновременно, повышая общую эффективность. Модуль Runbook продолжит работу только после выполнения всех действий.

Можно использовать ключевое слово Parallel , чтобы создать блок скрипта с несколькими командами, которые будут выполняться параллельно. Для этого используется приведенный ниже синтаксис. В этом случае действия Activity1 и Activity2 будут запущены одновременно. Действие Activity3 запустится только после завершения действий Activity1 и Activity2.

Можно использовать конструкцию ForEach -Parallel для обработки команд для каждого элемента в коллекции одновременно. Элементы в коллекции обрабатываются параллельно, а команды в блоке скрипта выполняются последовательно. Для этого используется приведенный ниже синтаксис. В этом случае действие Activity1 будет запущено одновременно для всех элементов в коллекции. Для каждого элемента действие Activity2 будет запускаться после завершения действия Activity1. Действие Activity3 запустится только после завершения действий Activity1 и Activity2 для всех элементов.

Ключевое слово Sequence используется для последовательного выполнения команд внутри блока скрипта Parallel. Блок скрипта Sequence выполняется параллельно с другими командами, однако команды в блоке выполняются последовательно. Для этого используется приведенный ниже синтаксис. В этом случае действия Activity1, Activity2 и Activity3 будут запущены одновременно. Действие Activity4 будет запускаться только после завершения действия Activity3. Действие Activity5 начнется после завершения всех действий.

Как автоматически завершить работу Windows с помощью CMD

В случае, если вы не хотите проходить через все настройки планировщика сложных задач (как описано выше) и хотите самое простое решение для планирования автоматического выключения в Windows 10, тогда использование командной строки — лучший подход в такой ситуации.

Выполните следующие действия и узнайте, как настроить автоматическое отключение в Windows 10 с помощью командной строки:

Шаг (1): Прежде всего, щелкните правой кнопкой мыши кнопку «Пуск» и выберите «Командная строка» в меню опытного пользователя.

Шаг (2): Теперь в окне командной строки введите shutdown –s –t 600 (т. Е. 10 минут) и нажмите клавишу Enter.

Здесь 600 представляет количество секунд (60 x 10 = 600 секунд). Таким образом, в этом случае компьютер будет автоматически выключен через 10 минут.

Просто замените 600 на любой номер, который вы хотите. Здесь 600 за 10 минут. Если вы хотите автоматически выключить компьютер с Windows 10 за 30 минут, просто умножьте 60 x 30 и используйте это число вместо 600.

Вы также можете использовать ту же команду аналогичным образом, чтобы настроить автоматическое выключение Windows 10 с помощью PowerShell вместо окна командной строки.

Таким образом, вы можете увидеть, как просто запланировать автоматическое отключение в Windows 10 с помощью планировщика задач и командной строки.

Выводы

Использование конвейеров

Большинство командлетов PowerShell предназначены для поддержки конвейеров. В большинстве случаев можно передать результаты командлета Get в другой командлет того же существительного.
Например, выходные данные командлета можно передать в командлеты или.

Этот пример конвейера запускает службу WMI на компьютере:

Другой пример: можно передать выходные данные поставщика реестра PowerShell в командлет. В этом примере в раздел реестра MyCompany добавляется новая запись реестра NoOfEmployees со значением 8124.

Многие командлеты служебной программы, такие как,,, и, используются практически исключительно в конвейерах. К этим командлетам можно передать любой тип объекта. В этом примере показано, как сортировать все процессы на компьютере по количеству открытых дескрипторов в каждом процессе.

Объекты можно передавать в командлеты форматирования, экспорта и вывода, такие как,, , и .

В этом примере показано, как использовать командлет для отображения списка свойств объекта процесса.

Кроме того, выходные данные собственных команд можно передать в командлеты PowerShell. Пример:

Важно!

Потоки успехов и ошибок похожи на потоки stdin и stderr других оболочек. Однако stdin не подключен к конвейеру PowerShell для ввода данных. Дополнительные сведения см. в разделе about_Redirection.

С небольшой практикой вы обнаружите, что объединение простых команд в конвейеры экономит время и ввод и делает создание сценариев более эффективным.

Базовые классы командлетов

Windows PowerShell поддерживает командлеты, которые являются производными от следующих двух базовых классов.

  • Большинство командлетов основаны на классах .NET, производных от базового класса System. Management. Automation. командлет .
    наследование от этого класса позволяет командлету использовать минимальный набор зависимостей от Windows PowerShell среды выполнения. Это имеет два преимущества. Первое преимущество заключается в том, что объекты командлетов меньше, и, скорее всего, изменения в среде выполнения PowerShell подвергаются меньшему. Второе преимущество заключается в том, что при необходимости можно напрямую создать экземпляр объекта командлета, а затем вызвать его напрямую, а не вызывать его через среду выполнения PowerShell.

  • Более сложные командлеты основаны на классах .NET, производных от базового класса System. Management. Automation. PSCmdlet . Наследование от этого класса обеспечивает гораздо больший доступ к среде выполнения PowerShell. Этот доступ позволяет командлету вызывать скрипты, получать доступ к поставщикам и получать доступ к текущему состоянию сеанса.
    (Для доступа к текущему состоянию сеанса вы получаете и устанавливаете переменные сеанса и настройки.) Однако наследование от этого класса увеличивает размер объекта командлета, и это означает, что командлет более тесно связан с текущей версией среды выполнения PowerShell.

Как правило, если вам не нужен расширенный доступ к среде выполнения PowerShell, необходимо создать производный от класса System. Management. Automation. командлет .
Однако среда выполнения PowerShell имеет широкие возможности ведения журнала для выполнения командлетов. Если модель аудита зависит от этого журнала, можно предотвратить выполнение командлета из другого командлета, производя от класса System. Management. Automation. PSCmdlet .

Как в скрипте PowerShell проверить, что он запущен от имени администратора

Следующий код PowerShell можно использовать для проверки того, работает ли текущий сценарий в режиме «Запуск от имени администратора»:

Write-Host "Проверяем повышенные права..."
if (-NOT ( ::GetCurrent()).IsInRole(`
 "Administrator")) {
	Write-Warning "Недостаточные разрешения для скрипта. Откройте консоль PowerShell как администратор и вновь запустите этот скрипт."
	Break
}
else {
	Write-Host "Код запущен от имени администратора — продолжаем выполнение скрипта..." -ForegroundColor Green
}

Сохраните код PowerShell в файле check_process_elevation.ps1 и запустите его в консоли без прав администратора:

C:\PS\check_process_elevation.ps1

Как видите, появилось сообщение, что у вас нет прав администратора, поэтому сценарий PowerShell был остановлен.

Теперь запустите сценарий в сеансе PowerShell с повышенными привилегиями. Как видите, сценарий обнаружил, что этот сеанс PowerShell запущен от имени администратора.

Также вы можете запросить повышение прав прямо из сценария PowerShell. Для этого вместо строк:

	Write-Warning "Недостаточные разрешения для скрипта. Откройте консоль PowerShell как администратор и вновь запустите этот скрипт."
	Break

используйте следующий код:

Start-Process Powershell -ArgumentList $PSCommandPath -Verb RunAs

При запуске сценария без прав администратора он будет повторно запущен в новом сеансе PowerShell с повышенными привилегиями, и вы увидите запрос на повышение прав UAC. Если вы примете его, ваш сценарий PS1 будет запущен от имени администратора. (Путь к текущему файлу сценария PowerShell передаётся с помощью переменной среды $PSCommandPath.)

В PowerShell 4.0 или новее ещё проще проверить, работает ли ваш скрипт с правами администратора. Для этого используйте директиву -RunAsAdministrator.

#requires -version 4.0
#requires -RunAsAdministrator
Write-Host "PowerShell запущен от имени администратора" -ForegroundColor Green

Если скрипт не запускается под администратором, появится следующая ошибка:

C:\PS\check_process_elevation.ps1: The script 'check_process_elevation.ps1' cannot be run because it contains a "#requires" statement for running as Administrator. The current PowerShell session is not running as Administrator. Start PowerShell by using the Run as Administrator option, and then try running the script again.

Если вы запустите сценарий на компьютере с PowerShell v2, появится следующее сообщение об ошибке:

Cannot process the “#requires” statement at line 2 because it is not in the correct format.
The “#requires” statement must be in one of the following formats:
“#requires -shellid <shellID>”
“#requires -version <major.minor>”
“#requires -pssnapin <psSnapInName> ”

Для управления Active Directory вам может потребоваться другая задача: проверить, есть ли у текущего пользователя права администратора домена из сценария PowerShell. Используйте следующий код:

If(( ::GetCurrent()).IsInRole("Domain Admins"))
{
	# у пользователя, запустившего этого скрипт, есть права Domain Admins (админа домена)
}
Else
{
	# нет прав Domain Admins (админа домена)
}

Получение объектов заданий

Командлет возвращает объекты, представляющие фоновые задания, которые были запущены в текущем сеансе. Без параметров возвращает все задания, запущенные в текущем сеансе.

Объект задания содержит состояние задания, которое указывает, завершено ли задание. Завершенное задание имеет состояние » завершено » или » сбой». Задание также может быть заблокировано или заработано.

Вы можете сохранить объект задания в переменной и использовать его для представления задания в более поздней команде. Следующая команда возвращает задание с ИДЕНТИФИКАТОРом 1 и сохраняет его в переменной.

Как использовать профиль

Многие элементы, создаваемые в PowerShell, и большинство выполняемых команд влияют только на текущий сеанс. После завершения сеанса элементы удаляются.

Команды и элементы, относящиеся к сеансу, включают переменные, привилегированные переменные, псевдонимы, функции, команды (кроме Set-ExecutionPolicy) и модули PowerShell, добавленные в сеанс.

Чтобы сохранить эти элементы и сделать их доступными во всех будущих сеансах, добавьте их в профиль PowerShell.

Другим распространенным применением профилей является сохранение часто используемых функций, псевдонимов и переменных. При сохранении элементов в профиле их можно использовать в любом соответствующем сеансе без их повторного создания.

Основные команды для PowerShell

В программе поддерживается огромное количество команд, применяемых к различным компонентам операционной системы Windows 10. Хорошо что есть возможность получить справку о любой команде непосредственно в окне программы Windows PowerShell. Это поможет разобраться с основными командами и принципами работы в новой среде.

  • Get-Help — отображение справочных сведений о командлетах и основных понятиях. В справке описываются командлеты, функции, сценарии и модули, а также объясняются основные понятия, в том числе элементы языка Windows PowerShell.
  • Update-Help — загрузка и установка файлов справки с общей папки или Интернета. После обновлений операционной системы может понадобиться обновление справки — обнаружение, скачивание и установка обновлений для модулей.
  • Get-Command — вывод всех доступных функций и командлетов, с авто заполнением строки. Выбрав интересующую команду, выполните её с Get-Help для быстрого получения справки. Например, ознакомится с Get-Help Remove-AppxPackage.

Заключение

На самом деле Windows PowerShell — это очень полезная программа, которая не раз экономила нам время. Множество инструкций писались на примерах с её использованием. Но даже половина возможностей обновлённой оболочки не была задействована. О работе в ней можно написать значительно больше. Но благодаря основным командам можно ознакомиться со всеми возможностями программы.

Модули интеграции

Модуль интеграции — это пакет, который содержит модуль Windows PowerShell и может быть импортирован в службу автоматизации. Модули Windows PowerShell содержат командлеты, которые можно использовать в последовательностях runbook службы автоматизации. Продукты и службы, такие как Operations Manager и Azure, обладают модулями, содержащими командлеты для их работы.

Модули интеграции, импортированные в службу автоматизации, автоматически доступны для всех runbook. Так как служба автоматизации основана на Windows PowerShell 4.0, она поддерживает автоматическую загрузку модулей, то есть командлеты из установленных модулей можно использовать без их импорта в скрипт с помощью команды Import-Module.

Любой модуль Windows PowerShell можно импортировать в службу автоматизации при условии, что все его зависимости размещаются в одной папке. Если этот модуль зависит от параметров реестра или файлов, которые не находятся по стандартному пути, его можно импортировать, но, скорее всего, он не будет работать, так как служба автоматизации не сможет найти его зависимости. Модули с внешними зависимостями могут быть использованы в модулях runbook путем установи их на другой узел и доступа к ним из блока сценария .

В Service Management Automation можно использовать модули с внешними зависимостями, установив их на каждый сервер рабочей роли. Хотя командлеты в этих модулях можно использовать в runbook, они не будут обнаруживаться службой автоматизации для поддержки таких компонентов, как мастер вставки действия. Чтобы использовать этот компонент, можно создать переносимый модуль, используя командлет New-SmaPortableModule . Этот командлет создает модуль, включающий заглушку для каждого из его командлетов, который можно импортировать в службу автоматизации. Когда модуль Runbook использует один из этих командлетов, заглушка перенаправляет вызов в фактический командлет внешнего модуля. Этот модуль необходимо установить на каждом сервере Worker, в противном случае произойдет сбой вызова.

Изменение параметров задания

Можно изменить параметры задания запланированного задания при создании запланированного задания или изменении существующего задания.

Сплаттед передаются в командлет для создания задания процесса. Для указания параметров задания в переменной используется параметр scheduledjoboptions .

Можно также изменить параметры задания на существующее запланированное задание в любое время.
Следующая команда использует командлет, чтобы изменить значение параметра вакеторун процессжоб scheduledJob на true.

Командлеты в модуле PSScheduledJob , такие как командлет, не имеют параметров имени или идентификатора . Параметр InputObject можно использовать для указания параметров запланированного задания или передачи по конвейеру запланированного задания из командлета в .

В этом примере используется командлет для получения процессжоб. Он использует командлет, чтобы получить параметры задания в процессжоб , и командлет, чтобы изменить параметр задания вакеторун в процессжоб на true.

Переменные окружения

Через Powershell можно устанавливать и читать переменные окружения. Обычные методы позволяют изменять значения окружения только на текущую сессию, но вы можете использовать методы .NET, которые могут создать постоянные значения.

Значения, которые вы можете установить в переменных окружения, могут быть только строками. Создать массивы, числа и функции вы не сможете. Плюсы этого метода в том, что они будут доступны для любого интерпретатора и программы.

Чтение

Для получения переменных окружения вы можете использовать 2 способа. Первый — через встроенную переменную $env. Так это будет выглядеть на примере переменной Path:

Еще один способ заключается в том, что в Powershell переменные окружения располагаются как отдельный раздел в который вы можете перейти и вывести все значения:

Открыть значение любой переменно можно так же как и любой другой файл:

Переменные окружения делятся на несколько типов: machine -> user -> process, .

  • machine — относится к ОС и эти переменные может прочитать любой пользователь;
  • user — относятся к конкретному пользователю. Эти значения перезаписывают значения machine;
  • process — динамические переменные, которые создаются при запуске процесса. Они являются совмещением user + machine.

Используя способы выше вы видите только динамические переменные. Если у вас есть 2 одинаковых переменных на пользовательском и системном уровне вы можете использовать метод .NET для получения конкретной переменной:

Либо вы можете все переменные окружения конкретного типа:

Создание

Переменную окружения, которая будет жить в рамках одной сессии Powershell, можно создать следующей командой:

При закрытии консоли, переменна созданная выше, будет удалена. Исправить это можно использовав методы .NET. В следующем примере мы создадим переменную типа «Machine», но уже постоянную:

Аналогичное действие, но для пользовательских переменных:

Изменение и удаление

Изменить переменную окружения, на текущую сессию, можно следующими способом:

Что бы сделать изменения постоянными нужно использовать метод .NET:

Рекомендую

Выбор профиля

Если вы используете несколько ведущих приложений, помещайте элементы, используемые во всех ведущих приложениях, в профиль. Размещение элементов, относящихся к ведущему приложению, например команды, устанавливающей цвет фона для ведущего приложения, в профиле, характерном для этого хост-приложения.

Если вы являетесь администратором, который настраивает PowerShell для многих пользователей, следуйте приведенным ниже рекомендациям.

  • Хранение общих элементов в профиле
  • Хранение элементов, относящихся к ведущему приложению, в профилях, относящихся к ведущему приложению
  • Хранение элементов для конкретных пользователей в пользовательских профилях

Обязательно ознакомьтесь с документацией по ведущему приложению, чтобы получить специальные реализации профилей PowerShell.

Профили и удаленные сеансы

Профили PowerShell не запускаются автоматически в удаленных сеансах, поэтому команды, добавленные профилями, отсутствуют в удаленном сеансе. Кроме того, Автоматическая переменная не заполняется в удаленных сеансах.

Чтобы запустить профиль в сеансе, используйте командлет Invoke-Command .

Например, следующая команда запускает профиль «текущий пользователь, текущий узел» с локального компьютера в сеансе .

Следующая команда запускает профиль «текущий пользователь, текущий узел» с удаленного компьютера в сеансе . Так как переменная не заполнена, команда использует явный путь к профилю. Мы используем оператор «точка с точкой», чтобы профиль выполнялся в текущей области на удаленном компьютере, а не в собственной области.

После выполнения этой команды команды, которые профиль добавляет в сеанс, будут доступны в .

Действия по исправлению ошибок Windows PowerShell перестали работать

  1. Инициируйте полное сканирование системы.
  2. Сделайте чистый процесс загрузки.
  3. Отключите и снова включите Windows PowerShell.
  4. Создайте новую учетную запись Microsoft.

1. Инициируйте полное сканирование системы

В некоторых ситуациях атака вредоносного ПО может быть причиной того, что Windows PowerShell не работает должным образом. Итак, первое, что нужно сделать, это запустить сканирование безопасности.

Скорее всего, вы заразились Poweliks , вредоносной программой, которая мешает PowerShell. Файл, связанный с этим вирусом: dllhost.exe * 32 или dllhst3g.exe * 32, и его обычно можно остановить из диспетчера задач.

Теперь в этом случае вам нужно использовать антивирусную или антивирусную программу, например Malwarebytes, и сканировать систему Windows 10 на наличие возможных зараженных файлов. Программа безопасности должна автоматически находить и удалять вредоносные программы.

Примечание : рекомендуется запускать сканирование безопасности из безопасного режима, то есть когда сторонние приложения и процессы отключаются платформой Windows 10. Вы можете перейти в безопасный режим:

  1. Нажмите горячие клавиши Win + R и в поле RUN введите msconfig и нажмите Enter.
  2. Из окна Конфигурация системы перейдите на вкладку Загрузка .
  3. В разделе «Загрузка» выберите Безопасная загрузка .
  4. Сохраните изменения и перезагрузите компьютер.
  5. Это все.

2. Инициируйте чистую загрузку

Вы можете увидеть, вызывает ли программный конфликт сбой в Windows PowerShell, инициировав чистую загрузку. Таким образом, вы можете запустить систему Windows 10 только с функциями по умолчанию.

Если ошибка Windows PowerShell перестала работать не отображается после выполнения чистой загрузки, это означает, что существует конфликт программного обеспечения, поэтому необходимо удалить программу, которая стоит за этой проблемой.

Вот как вы можете запустить процесс чистой загрузки:

  1. Нажмите горячие клавиши Win + R на клавиатуре, чтобы запустить окно RUN.
  2. Там введите msconfig и нажмите Enter.
  3. В Конфигурация системы перейдите на вкладку Общие.
  4. С этого момента в разделе Выборочный запуск снимите флажок «Загружать элементы запуска».
  5. Затем перейдите на вкладку Услуги .
  6. Установите флажок скрыть все службы Microsoft , а затем нажмите Отключить все .
  7. Теперь перейдите на вкладку Автозагрузка и нажмите ссылку открыть диспетчер задач .
  8. Из диспетчера задач отключите все автозагрузки программ.
  9. Сохраните ваши изменения и закройте эти окна.
  10. Перезагрузите систему Windows 10.

ТАКЖЕ ПРОЧИТАЙТЕ . Microsoft PowerShell все чаще используется для распространения вредоносного ПО.

3. Отключите и снова включите Windows PowerShell

  1. Нажмите горячие клавиши Win + X и выберите Панель управления .
  2. С панели управления перейдите в категорию .
  3. А из отображаемого списка выберите Удалить – в разделе «Программы».
  4. На левой панели главного окна нажмите ссылку Включить или отключить функции Windows .
  5. Прокрутите вниз и найдите запись Windows PowerShell .
  6. Снимите флажок с PowerShell.
  7. Сохраните и примените ваши изменения.
  8. Перезагрузите компьютер с Windows 10.
  9. После этого повторите шаги, описанные выше, и снова включите функцию Windows PowerShell.

ТАКЖЕ ЧИТАЙТЕ: 10 лучших программ для удаления для пользователей ПК

4. Создайте новую учетную запись Microsoft

Ваша учетная запись может быть повреждена (по разным причинам), и поэтому вы можете получить сообщение об ошибке «Windows PowerShell прекратил работу».

Итак, попробуйте создать новую учетную запись, а затем убедитесь, что проблема все еще возникает или нет.Вот то, что вам нужно следовать:

  1. Нажмите на значок запуска Windows.
  2. Выберите Настройки и перейдите в раздел Аккаунты .
  3. Оттуда выберите Семья и другие пользователи .
  4. Нажмите Добавить кого-то еще на этот компьютер.
  5. Просто следуйте инструкциям на экране для возобновления этого процесса.
  6. Подсказка: не забудьте сделать резервную копию своих данных перед завершением этого процесса – возможно, вам придется импортировать ваши личные файлы и приложение под новой учетной записью.

Надеемся, что сообщение об ошибке «Windows PowerShell перестало работать» исчезло. Если у вас есть вопросы, связанные с решениями для устранения неполадок, описанными выше, свяжитесь с нашей командой.

Вы можете легко связаться с нами, используя поле для комментариев снизу или заполнив контактную форму, доступную на странице О нас.

Требования к операционной системе

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

Запуск задания на локальном компьютере

Чтобы запустить фоновое задание на локальном компьютере, используйте командлет.

Чтобы написать команду, заключите команду, которая выполняется заданием, в фигурные скобки ( ). Используйте параметр ScriptBlock для указания команды.

Следующая команда запускает фоновое задание, которое выполняет команду на локальном компьютере.

Когда вы запускаете фоновое задание, Командная строка возвращается немедленно, даже если выполнение задания занимает длительное время. Пока задание выполняется, можно продолжать работу с данным сеансом.

Команда возвращает объект, представляющий задание. Объект задания содержит полезную информацию о задании, но не содержит результатов его выполнения.

Вы можете сохранить объект задания в переменной, а затем использовать его вместе с другими командлетами задания для управления фоновыми заданиями. Следующая команда запускает объект задания и сохраняет результирующий объект задания в переменной.

Начиная с версии PowerShell 6,0 можно использовать оператор Background ( ) в конце конвейера для запуска фонового задания. Дополнительные сведения см. в разделе .

Использование оператора Background функционально эквивалентно использованию командлета в предыдущем примере.

Терминология для продукта, используемая в документации

Документация по PowerShell состоит из двух типов содержимого: справочника по командлетам и концептуального содержимого. Справочник по командлетам предоставляется отдельно для каждой версии. Вы можете выбрать другую версию из раскрывающегося меню в верхнем левом углу страницы. При изменении версий концептуальное содержимое не изменяется. Как правило, основные понятия применимы ко всем версиям PowerShell, если только статья не относится к конкретной версии.

  • PowerShell — это имя по умолчанию, используемое для продукта. Используя это наименование в документации, мы имеем в виду текущую версию PowerShell. Различия между PowerShell и Windows PowerShell подчеркиваются указанием конкретной версии.
  • Windows PowerShell — PowerShell на основе .NET Framework. Windows PowerShell поставляется только в Windows, и для его работы требуется полная версия платформы .NET Framework. Можно запускать PowerShell и Windows PowerShell на одном компьютере Windows.

Шаблон RunspacePool

PowerShell имеет ускоритель типа , который поможет нам в создании компонентов runspace — пусть работает

1. Создадим RunspacePool и it:

Два аргумента, переданных в , и — это минимальное и максимальное количество пробегов, разрешенных к выполнению в любой момент времени, что дает нам эффективную максимальную степень параллельности из 8.

3. Вызов экземпляра PowerShell асинхронно с помощью APM:

Используя то, что известно в терминологии разработки .NET как Asynchronous Programming Model, можно разделить вызов команды на метод , чтобы дать «зеленый свет» на выполнение кода, и метод , чтобы собрать результаты. Так как в данном случае нас не интересует какая-либо обратная связь (мы все равно не ждем выхода из ), то мы можем сделать это простым вызовом первого метода

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Все про сервера
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: