中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PowerShell遠程處理的原理(了解WinRM)

發布時間:2020-07-18 12:22:55 來源:網絡 閱讀:856 作者:zengchuixin2008 欄目:系統運維

WinRM的主要特性

與Telnet和Shell(SSH)不一樣的是,PowerShell采用一種新的通信協議,我們稱之為針對管理的Web服務(Web Services for Management,WS-MAN)。
WS-MAN完全基于HTTP或者HTTPS進行工作,這樣保證在需要的情況下,能輕易透過防火墻進行作業(因為每種協議都使用唯一的端口進行通信)。微軟對WS-MAN的實現主要基于一個后臺服務:Windows遠程管理組件(WinRM)。
微軟宣布遠程處理技術除了WS-MAN之外,還可以基于SSH協議。這對那些已經熟悉SSH而不熟悉WS-MAN與WinRM的公司來說是一個好消息。從用戶角度講,如何使用遠程處理技術并無區別,底層協議的區別對你來說應該是透明的。
實際上,微軟很多自己的DevOPS產品也使用了WinRM技術,例如:

Deploy to IIS using WinRM - Azure Pipelines | Microsoft Docs https://docs.microsoft.com/zh-cn/azure/devops/pipelines/apps/cd/deploy-webdeploy-iis-winrm?view=azure-devops

序列化與反序列化

當你運行一個遠程命令時,它會將輸出結果放入一個特定形式的包中,之后通過網絡中的HTTP(或者HTTPS)協議傳回本地計算機。XML已經被證明是針對該問題的優秀解決方案,所以PowerShell會將輸出對象序列化到XML中。下一步,XML文件會通過網絡進行傳輸。當到達本地計算機之后,該XML會反序列化為PowerShell可以處理的對象。序列化和反序列化僅僅是一種格式轉換的形式:從對象轉化為XML稱為序列化,從XML轉為對象則為反序列化。

WinRM是一個通用的服務

并非只有PowerShell能使用WinRM服務。實際上,微軟在越來越多的管理程序中開始使用WinRM服務——甚至包含已經使用了其他協議的那些程序。基于這一思想,微軟保證WinRM可以將流量導入至多種管理程序——不僅僅是PowerShell。WinRM類似一個調度器:當有新的流量進來后,WinRM會決定由哪種程序來處理這部分流量。所有WinRM流量都標記了接收應用程序的名稱,同時這些應用程序都必須在WinRM中創建各自的端點,這樣WinRM才能偵聽這些主體的流量。這也就意味著,你們不只需要啟用WinRM服務,也需要在WinRM中將PowerShell注冊為一個端點。

一對一和一對多的遠程處理

PowerShell可以通過兩種方法實現遠程處理,第一種稱為一對一或者1:1遠程處理(第二種稱為一對多,或者1:n遠程處理。當使用一對一遠程處理時,實際上是在單臺遠程計算機上調用了一個Shell命令窗口。輸入的任何命令都會直接在該計算機上運行,然后在遠程處理窗口中返回輸出結果。該機制非常類似于遠程桌面連接(Remote Desktop Connection),只是Windows PowerShell采用的是命令行環境。相對于遠程桌面連接,這種遠程處理技術只需要使用很少的資源,所以對服務器來講,開銷會小很多。

如果需要針對一臺遠程計算機建立一對一的遠程處理進程,請運行下面的命令。

Enter-PSSession -ComputerName Server-R2
默認情況下,PowerShell最多一次與32臺遠程計算機通信。如果超過32臺,那么會將計算機信息存放到一個隊列中。如果命令在一臺遠程計算機上運行完畢,隊列中的下一臺計算機會立即開始運行。當然,如果網絡足夠良好,并且計算機足夠強勁,那么我們可以通過Invoke-Command的-ThrottleLimit參數來指定更多數量的計算機。

Invoke-Command | Microsoft Docs
https://docs.microsoft.com/en-us/previous-versions/dd347578(v=technet.10)?redirectedfrom=MSDN

并發執行

使用Invoke-Command命令比Cmdlet的-ComputerName參數更有效率,更有用。計算機會被并發地訪問,也就意味著,命令運行更有效率。命令的輸出結果中包含PSComputerName屬性,也就使得我們能輕易看到哪個結果來自于哪臺計算機。

備注:部分內容參考了《Windows PowerShell實戰指南(第3版)》,經過作者二次整理和補充,更加方便大家理解。

主流編程語言及工具對WinRM的支持情況

GitHub - diyan/pywinrm: Python library for Windows Remote Management (WinRM) https://github.com/diyan/pywinrm
GitHub - WinRb/WinRM: Ruby library for Windows Remote Management https://github.com/WinRb/WinRM
GitHub - masterzen/winrm: Command-line tool and library for Windows remote command execution in Go https://github.com/masterzen/winrm
winrm – Run tasks over Microsoft’s WinRM — Ansible Documentation https://docs.ansible.com/ansible/devel/plugins/connection/winrm.html

更多內容,您也可以參考
PowerShell遠程處理的原理(了解WinRM)

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

黔江区| 杂多县| 湘乡市| 成都市| 铁岭县| 滨海县| 富裕县| 拜城县| 鹤峰县| 连南| 株洲市| 鄯善县| 会泽县| 彰武县| 松桃| 淮安市| 南宁市| 延川县| 抚州市| 天峨县| 富蕴县| 宁夏| 桦甸市| 柏乡县| 五台县| 南京市| 瓦房店市| 常熟市| 霞浦县| 大城县| 涞水县| 长子县| 汉阴县| 婺源县| 邯郸县| 安新县| 江安县| 宁武县| 云阳县| 南京市| 东平县|