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。

Copy-ItemRestart-Computer

command

使用 cmd 命令解释器执行指定的命令。

robocopy C:\Logfiles\* C:\Drawings /S /E

powershell

运行 PowerShell 脚本。

Copy-Item -Path "C:\Logfiles\*" -Destination "C:\Drawings" -Recurse

输出

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 启用此功能。

此条目有帮助吗?