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