Поделиться через


PowerShellOnTargetMachines@3 — задача PowerShell на целевых компьютерах версии 3

Эта задача предназначена для выполнения скриптов PowerShell на удаленных компьютерах с помощью PSSession и Invoke-Command для удаленного взаимодействия.

Синтаксис

# PowerShell on target machines v3
# Execute PowerShell scripts on remote machines using PSSession and Invoke-Command for remoting.
- task: PowerShellOnTargetMachines@3
  inputs:
    Machines: # string. Required. Machines. 
    #UserName: # string. Username. 
    #UserPassword: # string. Password. 
  # Script options
    #ScriptType: 'Inline' # 'FilePath' | 'Inline'. Script Type. Default: Inline.
    #ScriptPath: # string. Required when ScriptType = FilePath. Script File Path. 
    InlineScript: # string. Required when ScriptType = Inline. Script. 
    #ScriptArguments: # string. Optional. Use when ScriptType = FilePath. Script Arguments. 
    #InitializationScript: # string. Optional. Use when ScriptType = FilePath. Initialization script. 
    #SessionVariables: # string. Optional. Use when ScriptType = FilePath. Session Variables. 
  # PSSession options
    #CommunicationProtocol: 'Https' # 'Http' | 'Https'. Protocol. Default: Https.
    #AuthenticationMechanism: 'Default' # 'Default' | 'Credssp'. Authentication. Default: Default.
    #NewPsSessionOptionArguments: '-SkipCACheck -IdleTimeout 7200000 -OperationTimeout 0 -OutputBufferingMode Block' # string. Session Option parameters. Default: -SkipCACheck -IdleTimeout 7200000 -OperationTimeout 0 -OutputBufferingMode Block.
  # Error handling options
    #ErrorActionPreference: 'stop' # 'stop' | 'continue' | 'silentlyContinue'. ErrorActionPreference. Default: stop.
    #failOnStderr: false # boolean. Fail on Standard Error. Default: false.
    #ignoreLASTEXITCODE: false # boolean. Ignore $LASTEXITCODE. Default: false.
  # Advanced
    #WorkingDirectory: # string. Working Directory. 
    #RunPowershellInParallel: true # boolean. Run PowerShell in Parallel. Default: true.

Входные данные

Machines - компьютеры
string. Обязательное.

Задает разделенный запятыми список полных доменных имен компьютера или IP-адресов, а также также номер порта. Может быть:

  • Имя группы ресурсов Azure.
  • Список имен компьютеров с разделителями-запятыми. Пример: dbserver.fabrikam.com,dbserver_int.fabrikam.com:5986,192.168.34:5986
  • Выходная переменная из предыдущей задачи.

Если порт не указан, используется порт WinRM по умолчанию. Это зависит от настроенного протокола. Для WinRM 2.0 порт HTTP по умолчанию 5985, а порт HTTPS по умолчанию — 5986.


UserName - имени пользователя
string.

Указывает имя пользователя домена или локальной учетной записи администратора на целевом узле.

  • Поддерживаются такие форматы, как username, domain\username, machine-name\usernameи .\username.
  • Форматы имени участника-пользователя, такие как username@domain.com и встроенные системные учетные записи, такие как NT Authority\System, не поддерживаются.

UserPassword - пароль
string.

Задает пароль для целевых компьютеров. Переменные, определенные в определениях сборки и выпуска, как $(passwordVariable) принимаются. Вы можете пометить тип переменной как secret для защиты.


типа скрипта ScriptType -
string. Допустимые значения: FilePath (путь к файлу), Inline. Значение по умолчанию: Inline.

Указывает тип выполняемого скрипта: встроенный или путь к файлу.


Путь к файлу скриптаScriptPath -
string. Требуется, если ScriptType = FilePath.

Указывает расположение скрипта PowerShell на целевых компьютерах или в пути UNC, например C:\BudgetIT\Web\Deploy\Website.ps1, которое должно быть доступно с целевого компьютера.


скрипта InlineScript -
string. Требуется, если ScriptType = Inline. Значение по умолчанию: # Write your powershell commands here.\n\nWrite-Output "Hello World".


Аргументы скрипта ScriptArguments -
string. Необязательно. Используется при ScriptType = FilePath.

Задает аргументы для скрипта PowerShell. Может быть порядковый или именованный параметр, например тест -testParam. Пример: -applicationPath $(applicationPath), -username $(vmusername), -password $(vmpassword).


скрипта инициализации InitializationScript -
string. Необязательно. Используется при ScriptType = FilePath.

Указывает расположение скрипта данных для DSC на целевых компьютерах или в пути UNC, например C:\BudgetIT\Web\Deploy\WebsiteConfiguration.ps1. Рекомендуется использовать аргументы вместо скрипта инициализации.


SessionVariables - переменных сеанса
string. Необязательно. Используется при ScriptType = FilePath.

Используется для настройки переменных сеанса для скриптов PowerShell.
Указывает разделенный запятыми список, например $varx=valuex, $vary=valuey. Чаще всего используется для обратной совместимости с более ранними версиями службы выпуска. Рекомендуется использовать аргументы вместо переменных сеанса.


протокола CommunicationProtocol -
string. Допустимые значения: Http, Https. Значение по умолчанию: Https.

Указывает протокол, используемый для подключения службы WinRM к компьютеру. Значение по умолчанию — HTTPS.


AuthenticationMechanism - аутентификации
string. Допустимые значения: Default, Credssp. Значение по умолчанию: Default.

Указывает механизм проверки подлинности, используемый для создания PSSession. Для проверки подлинности CredSSP поля имени пользователя и пароля являются обязательными.


Параметры параметра сеанса NewPsSessionOptionArguments -
string. Значение по умолчанию: -SkipCACheck -IdleTimeout 7200000 -OperationTimeout 0 -OutputBufferingMode Block.

Дополнительные параметры удаленного сеанса (New-PSSessionOption). Например, -SkipCACheck, -SkipCNCheck, -SkipRevocationCheckи т. д. Дополнительные сведения см. в полном списке всех параметров сеанса.


ErrorActionPreference - ErrorActionPreference
string. Допустимые значения: stop, continue, silentlyContinue. Значение по умолчанию: stop.

Добавляет строку $ErrorActionPreference = 'VALUE' в верхней части скрипта.


failOnStderr - сбой стандартной ошибки
boolean. Значение по умолчанию: false.

Если задано значение true, происходит сбой, если в конвейер ошибок записываются какие-либо ошибки или если данные записываются в поток стандартных ошибок. В противном случае задача использует код выхода для определения сбоя.


ignoreLASTEXITCODE - игнорировать $LASTEXITCODE
boolean. Значение по умолчанию: false.

Если задано значение false, строка if ((Test-Path -LiteralPath variable:\LASTEXITCODE)) { exit $LASTEXITCODE } выполняется в конце скрипта. Это приводит к распространению последнего кода выхода из внешней команды в качестве кода выхода PowerShell. В противном случае строка не выполняется до конца скрипта.


WorkingDirectory - рабочий каталог
string.

Указывает рабочий каталог, в котором выполняется скрипт.


RunPowershellInParallel - запустить PowerShell в параллельном
boolean. Значение по умолчанию: true.

Если задано значение true, параллельно выполняет скрипты PowerShell на целевых компьютерах.


Параметры управления задачами

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

Выходные переменные

Нет.

Замечания

Используйте эту задачу для выполнения скриптов PowerShell на удаленных компьютерах.

Эта задача может выполнять как скрипты PowerShell, так и PowerShell-DSC скрипты:

  • Для сценариев PowerShell компьютеры должны установить PowerShell 2.0 или более поздней версии.
  • Для скриптов PowerShell-DSC компьютеры должны иметь последнюю версию Windows Management Framework. Это устанавливается по умолчанию в Windows 8.1, Windows Server 2012 R2 и последующих версиях.

Предпосылки

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

Настройка WinRM для локальных физических компьютеров или виртуальных машин

Выполните действия, описанные в присоединенных к домену

Настройка WinRM для виртуальных машин Microsoft Azure

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

  • классические виртуальные машины Azure. При создании классической виртуальной машины на портале Azure виртуальная машина уже настроена для WinRM по протоколу HTTPS, а порт 5986 по умолчанию уже открыт в брандмауэре и самозаверяющий сертификат, установленный на компьютере. К этим виртуальным машинам можно получить доступ без дополнительной настройки. Существующие классические виртуальные машины также можно выбрать с помощью задачи развертывания группы ресурсов Azure.

  • группу ресурсов Azure. Если у вас есть группа ресурсов Azure уже определена на портале Azure, необходимо настроить ее для использования протокола HTTPS WinRM. Необходимо открыть порт 5986 в брандмауэре и установить самозаверяющий сертификат.

Для динамического развертывания групп ресурсов Azure, содержащих виртуальные машины, используйте задачу развертывания группы ресурсов Azure. Эта задача имеет флажок с именем Включить предварительные требования развертывания. Выберите это, чтобы автоматически настроить протокол HTTPS WinRM на виртуальных машинах, открыть порт 5986 в брандмауэре и установить тестовый сертификат. Затем виртуальные машины готовы к использованию в задаче развертывания.

Новые возможности этой версии задачи

  • Использует PSSession и invoke-command для выполнения удаленного взаимодействия на целевых компьютерах.
  • Добавлена поддержка встроенного выполнения скрипта.
  • По умолчанию и проверка подлинности CredSSP поддерживаются.
  • Добавлены параметры обработки ошибок: ErrorActionPreference, ignoreLASTEXITCODE и сбой стандартной ошибки.

Требования

Требование Описание
Типы конвейеров YAML, классическая сборка, классический выпуск
Выполняется в Агент, DeploymentGroup
требования Нет
возможностей Эта задача не удовлетворяет требованиям к последующим задачам в задании.
ограничения команд Любое
переменные settable Любое
Версия агента 2.134.0 или более поздней версии
Категория задач Внедрять