使用HTTP api簡單的遠程執(zhí)行PowerShell腳本
可能有些情況下,你不想完全體驗通過PSRP(PowerShell遠程處理協(xié)議)遠程管理,或有需要從非Windows系統(tǒng)上執(zhí)行一些PowerShell腳本。你可能會像我很久之前在這篇文章中寫的那樣直接基于WS-Man來寫代碼。但是那樣很復(fù)雜,并且需要WS-Man和SOAP的一些知識。
我在PowerShell腳本中使用.Net HttpListener類寫了個HTTP監(jiān)聽器。你可以非常簡單地啟動一個監(jiān)聽器的實例(需要提升權(quán)限監(jiān)聽網(wǎng)絡(luò)),現(xiàn)在你可以執(zhí)行任意的PowerShell命令了,它還可以返回多種格式的執(zhí)行結(jié)果。
一旦你安裝了這個組件(只需要拷貝它到Documents\WindowsPowerShell\Modules 文件夾),并且導(dǎo)入,你就可以通過Start-HTTPListener啟動一個實例。
默認我讓它監(jiān)聽在8888端口,集成了Windows驗證,但是仍然可以在參數(shù)中配置。這里我打開了另一個PowerShell窗口,并執(zhí)行了“get-process powershell”
注意我使用 –UseDefaultCredentials來確保使用我的當(dāng)前安全上下文來驗證,否則你會被告知匿名訪問不支持。
默認情況下,我返回JSON格式的輸出。因為所得到的JSON對象是很大的,它會被截斷。 HTTP響應(yīng)的body是在內(nèi)容屬性,但是它是一個字節(jié)數(shù)組。我使用UTF8 .NET類進行解碼并顯示部分JSON數(shù)據(jù):
我可以使用ConvertFrom-JSON的,使之在PowerShell中更像模像樣:
當(dāng)然,如果你使用的是不同的客戶端腳本如Python,Perl或Ruby的,那么你可以在這些語言中調(diào)用腳本庫使用JSON的版本。
如果你只是玩玩而已,你可以用文本格式,使事情變得更加簡單易讀,就像直接在PowerShell中執(zhí)行相同的命令行:
其他格式可供選擇,如果你調(diào)用HTTP端點不帶任何參數(shù),你會得到基本的用法信息反饋:
相關(guān)文章
PowerShell: Try...Catch...Finally 實現(xiàn)方法
PowerShell 本身有很多很好的錯誤控制,但是習(xí)慣于.net編程的人員,更喜歡用Try Catch Finally方法,尤其當(dāng)有一段代碼必須被執(zhí)行到的時候?,F(xiàn)在好了,adweigert 想出了一個好方法來實現(xiàn)。這個函數(shù)已經(jīng)在多種情況下測試過,希望能對你有幫助2013-11-11Powershell小技巧之使用WMI測試服務(wù)響應(yīng)
這篇文章主要介紹了Powershell小技巧之使用WMI測試服務(wù)響應(yīng),需要的朋友可以參考下2014-09-09PowerShell連接SQL SERVER數(shù)據(jù)庫進行操作的實現(xiàn)代碼
這篇文章主要介紹了PowerShell連接SQL SERVER數(shù)據(jù)庫進行操作的實現(xiàn)代碼,需要的朋友可以參考下2016-11-11PowerShell小技巧之調(diào)用CloudFlare的SDK查詢網(wǎng)站統(tǒng)計信息
本文主要是記述使用powershell調(diào)用CloudFlare的SDK查詢網(wǎng)站統(tǒng)計信息,非常實用,希望對大家有所幫助2014-09-09