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、命令或指令碼
引數名 |
描述 |
示例 |
|---|---|---|
cmdlet |
呼叫 PowerShell cmdlet。 |
|
command |
使用 cmd 命令直譯器執行指定的命令。 |
|
powershell |
執行 PowerShell 指令碼。 |
|
輸出¶
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 啟用此功能。