微軟 PSRP 運算子¶
每當使用者想要從用戶端使用原生 PowerShell Runspace 在 Windows 伺服器上執行命令時,都需要 PowerShell Remoting Protocol (PSRP) 協定。
PsrpOperator
運算子實作了這些用戶端功能,從而能夠從 Airflow 排程 Windows 工作。在內部,它使用了 pypsrp 用戶端函式庫。
相較於 WinRMOperator
,使用 PSRP 擴展了 Windows 中的遠端連線功能,提供更好的工作階段控制,並與 PowerShell 生態系統(即 .NET Runspace 介面)更緊密地整合。
在單一工作階段中執行多個命令
重複使用 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
來啟用此功能。