PowerShellOnTargetMachines@3 - 目标计算机上的 PowerShell v3 任务
使用此任务在使用 PSSession 和远程处理Invoke-Command的远程计算机上执行 PowerShell 脚本。
使用此任务在远程计算机上 () 执行 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.
# PowerShell on Target Machines v3
# Execute PowerShell scripts on remote machine(s). This version of the task uses 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
. 必需。
指定计算机 FQDN 或 IP 地址的逗号分隔列表,并选择性地包含端口号。 可以是:
- Azure 资源组的名称。
- 以逗号分隔的计算机名称列表。 示例:
dbserver.fabrikam.com,dbserver_int.fabrikam.com:5986,192.168.34:5986
- 上一个任务的输出变量。
如果未指定端口,则使用默认 WinRM 端口。 这取决于已配置的协议。 对于 WinRM 2.0,默认 HTTP 端口为 5985
,默认 HTTPS 端口为 5986
。
UserName
- 用户
string
.
指定目标主机上的域或本地管理帐户的用户名 () 。
- 支持 、、
machine-name\username
和.\username
等username
domain\username
格式。 - 不支持 UPN 格式(如
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
test。 例如:-applicationPath $(applicationPath)
、-username $(vmusername)
、-password $(vmpassword)
。
InitializationScript
- 初始化脚本
string
. 可选。 在 时 ScriptType = FilePath
使用 。
指定目标计算机或 UNC 路径上 DSC 的数据脚本的位置,例如 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
按照已加入域中所述的步骤操作
为 Microsoft Azure 设置 WinRM 虚拟机
Azure 虚拟机要求 WinRM 使用 HTTPS 协议。 可以使用自签名测试证书。 在这种情况下,自动化代理不会验证由受信任的证书颁发机构颁发的证书的真实性。
Azure 经典虚拟机。 从Azure 门户创建经典虚拟机时,虚拟机已设置为基于 HTTPS 的 WinRM,默认端口 5986 已在防火墙中打开,并且计算机上安装了自签名证书。 无需进一步配置即可访问这些虚拟机。 也可以使用 Azure 资源组部署 任务选择现有的经典虚拟机。
Azure 资源组。 如果已在Azure 门户中定义了 Azure 资源组,则必须将其配置为使用 WinRM HTTPS 协议。 需要在防火墙中打开端口 5986,并安装自签名证书。
若要动态部署包含虚拟机的 Azure 资源组,请使用 Azure 资源组部署 任务。 此任务包含一个名为 “启用部署先决条件”的复选框。 选择此选项可自动在虚拟机上设置 WinRM HTTPS 协议,在防火墙中打开端口 5986,然后安装测试证书。 然后,虚拟机已准备好在部署任务中使用。
此任务版本中的新增功能
- 使用 PSSession 和 invoke-command 在目标计算机上执行远程处理。
- 添加了对内联脚本执行的支持。
- 支持默认和 CredSSP 身份验证。
- 添加了错误处理选项:
ErrorActionPreference
、ignoreLASTEXITCODE
和 “标准错误时失败”。