您好,登錄后才能下訂單哦!
最近發現gihub上早已有人把powershell的restful webapi做好了,而且是自宿主的owin。比上次用到的httplistener健壯許多。貌似還是支持job,runspace的。
https://github.com/DimensionDataCBUSydney/PowerShell.REST.API
過程其實比較簡單,html不用變,js只需要把拼裝webapi url的地方修改下就好,后臺的powershell webapi整個替換掉就ok了。
下載源碼,直接生成即可。我用的vs2017。然后就可以直接使用了,唯一的問題就是跨域。
一開始在jquery.ajax用jsop,但debug的響應里能看到返回的json對象,可是ajax就是接收不到,也就無法在頁面顯示,而且console.log(返回的json對象);里面完全沒有responseText
網上搜的大部分都沒什么用。
前端不行那就只好改后端了。主要是不想修改人家已經成熟的代碼,怕會有問題發生,但沒辦法。
經過一番研究,最終確定,要在owin中加入跨域的代碼:
1.安裝 Microsoft.AspNet.WebApi.Cors
2.DynamicPowerShellApi.Owin的Startup.cs 加入 using System.Web.Http.Cors;
3.line116處加入跨域配置 config.EnableCors(new EnableCorsAttribute("", "", "*"));
然后重新生成,就可以了,多了10個警告回頭再說- -~,經過測試,跨域問題解決。頁面可以正常顯示。
今天發現中文無法顯示,原來PowerShellRunner.cs的Line123中
? Regex.Replace(psOutput.LastOrDefault().ToString(), @"[^\u0000-\u007F]", string.Empty) 用正則匹配了所有的非拉丁字符并替換成空,會導致英文以外的文字都無法輸出。
解決辦法改正則
例如 ? Regex.Replace(psOutput.LastOrDefault().ToString(), @"", @"") 什么都不替換就是了
后端基本就是這個樣子了,如果大家有更好的方案可以交流下。
至于前端,用了下vue,感覺還是很不錯的。組件化真的挺方便。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。