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、命令或指令碼

為 Operator 提供以下引數之一

引數名

描述

示例

cmdlet

呼叫 PowerShell cmdlet。

Copy-Item, Restart-Computer

command

使用 cmd 命令直譯器執行指定的命令。

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

powershell

執行 PowerShell 指令碼。

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

輸出

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

本條目有幫助嗎?