Microsoft PSRP Operator¶
当用户希望使用原生 PowerShell Runspace 从客户端在 Windows 服务器上执行命令时,需要使用 PowerShell 远程协议 (PSRP) 协议。
通过 PsrpOperator
Operator 可以实现此类客户端能力,从而能够通过 Airflow 调度 Windows 作业。内部,它使用了 pypsrp 客户端库。
与 WinRMOperator
相比,使用 PSRP 扩展了 Windows 中的远程处理能力,提供了更好的会话控制以及与 PowerShell 生态系统的紧密集成(例如,.NET Runspace 接口)
在单个会话中运行多个命令
复用 Runspace 创建多个会话
处理 PowerShell 对象而不是纯文本
使用 JEA (Just-Enough-Administration) 使用受限终结点
能够使用 .NET Runspace 接口
使用 Operator¶
实例化 PsrpOperator
Operator 时,必须使用以下命名参数之一提供 cmdlet、命令或脚本
参数名 |
描述 |
示例 |
---|---|---|
cmdlet |
调用 PowerShell cmdlet。 |
|
command |
使用 cmd 命令解释器执行指定的命令。 |
|
powershell |
运行 PowerShell 脚本。 |
|
输出¶
PowerShell 提供多个输出流。
通常,Operator 使用内置日志机制记录通过作业状态轮询机制到达这些流的记录。成功流(即 stdout 或 shell 输出)的处理方式不同,如下所述:
启用 XComs 且 Operator 与原生 PowerShell cmdlet 或脚本一起使用时,shell 输出会使用 ConvertTo-Json
cmdlet 转换为 JSON,然后在客户端由 Operator 解码,以使 Operator 的返回值与 XComs 所需的序列化兼容。
当 XComs 未启用时(即 do_xcom_push
设置为 false),shell 输出会被像其他输出流一样记录到日志中,并显示在任务实例日志中。
安全字符串¶
Operator 添加了一个模板过滤器 securestring
,它将加密值并使其在远程会话中作为 SecureString 类型可用。这可以确保例如该值不会被意外记录。
使用模板过滤器需要将 DAG 配置为将字段渲染为原生对象(默认是将所有值强制转换为字符串,这在这里不起作用,因为我们需要一个已标记为要序列化为安全字符串的值)。使用 render_template_as_native_obj=True
启用此功能。