Microsoft PSRP 操作器¶
当用户想要使用原生 PowerShell 运行空间从客户端在 Windows 服务器上执行命令时,需要使用 PowerShell 远程处理协议 (PSRP) 协议。
PsrpOperator
操作器实现了此类客户端功能,支持从 Airflow 调度 Windows 作业。在内部,它使用了 pypsrp 客户端库。
与 WinRMOperator
相比,使用 PSRP 扩展了 Windows 中的远程处理功能,提供了更好的会话控制,并与 PowerShell 生态系统(即 .NET Runspace 接口)紧密集成。
在单个会话中运行多个命令
重用运行空间以创建多个会话
使用 PowerShell 对象而不是仅使用文本
使用 JEA(Just-Enough-Administration)使用受限端点
能够使用 .NET Runspace 接口
使用操作器¶
实例化 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
启用此功能。