可能有些情況下,你不想完全體驗(yàn)通過(guò)PSRP(PowerShell遠(yuǎn)程處理協(xié)議)遠(yuǎn)程管理,或有需要從非Windows系統(tǒng)上執(zhí)行一些PowerShell腳本。你可能會(huì)像我很久之前在這篇文章中寫(xiě)的那樣直接基于WS-Man來(lái)寫(xiě)代碼。但是那樣很復(fù)雜,并且需要WS-Man和SOAP的一些知識(shí)。
我在PowerShell腳本中使用.Net HttpListener類(lèi)寫(xiě)了個(gè)HTTP監(jiān)聽(tīng)器。你可以非常簡(jiǎn)單地啟動(dòng)一個(gè)監(jiān)聽(tīng)器的實(shí)例(需要提升權(quán)限監(jiān)聽(tīng)網(wǎng)絡(luò)),現(xiàn)在你可以執(zhí)行任意的PowerShell命令了,它還可以返回多種格式的執(zhí)行結(jié)果。
一旦你安裝了這個(gè)組件(只需要拷貝它到Documents\WindowsPowerShell\Modules 文件夾),并且導(dǎo)入,你就可以通過(guò)Start-HTTPListener啟動(dòng)一個(gè)實(shí)例。
![](/d/20211017/bcb92720bfa11c80e8454ad693d5996d.gif)
默認(rèn)我讓它監(jiān)聽(tīng)在8888端口,集成了Windows驗(yàn)證,但是仍然可以在參數(shù)中配置。這里我打開(kāi)了另一個(gè)PowerShell窗口,并執(zhí)行了“get-process powershell”
![](/d/20211017/b2344a8ea5db1848ee0e4515b994b10a.gif)
注意我使用 –UseDefaultCredentials來(lái)確保使用我的當(dāng)前安全上下文來(lái)驗(yàn)證,否則你會(huì)被告知匿名訪問(wèn)不支持。
默認(rèn)情況下,我返回JSON格式的輸出。因?yàn)樗玫降腏SON對(duì)象是很大的,它會(huì)被截?cái)唷?HTTP響應(yīng)的body是在內(nèi)容屬性,但是它是一個(gè)字節(jié)數(shù)組。我使用UTF8 .NET類(lèi)進(jìn)行解碼并顯示部分JSON數(shù)據(jù):
![](/d/20211017/5ce29da9ec8d09163bf39ff742bdc6e8.gif)
我可以使用ConvertFrom-JSON的,使之在PowerShell中更像模像樣:
![](/d/20211017/98ece68453eed3cad2c127803eaa259b.gif)
當(dāng)然,如果你使用的是不同的客戶端腳本如Python,Perl或Ruby的,那么你可以在這些語(yǔ)言中調(diào)用腳本庫(kù)使用JSON的版本。
如果你只是玩玩而已,你可以用文本格式,使事情變得更加簡(jiǎn)單易讀,就像直接在PowerShell中執(zhí)行相同的命令行:
![](/d/20211017/5ea4eee9885fa730085c5af1b2d94020.gif)
其他格式可供選擇,如果你調(diào)用HTTP端點(diǎn)不帶任何參數(shù),你會(huì)得到基本的用法信息反饋:
![](/d/20211017/a7d8a38e5d2f33b1343bdacc00857add.gif)
您可能感興趣的文章:- linux shell中 if else以及大于、小于、等于邏輯表達(dá)式介紹
- Linux中執(zhí)行shell腳本的4種方法總結(jié)
- Linux shell腳本編程if語(yǔ)句的使用方法(條件判斷)
- linux shell自定義函數(shù)(定義、返回值、變量作用域)介紹
- linux shell數(shù)組深入學(xué)習(xí)理解
- linux shell命令行選項(xiàng)與參數(shù)用法詳解
- linux shell腳本學(xué)習(xí)xargs命令使用詳解
- Linux Shell中判斷進(jìn)程是否存在的代碼
- Linux shell實(shí)現(xiàn)HTTP服務(wù)示例代碼