溫馨提示×

溫馨提示×

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

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

Html+JS+PowerShell打造Web版AD管理系統(tǒng)(二)

發(fā)布時間:2020-08-04 10:23:40 來源:網(wǎng)絡 閱讀:7275 作者:tliursc 欄目:系統(tǒng)運維

最近發(fā)現(xiàn)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

網(wǎng)上搜的大部分都沒什么用。

前端不行那就只好改后端了。主要是不想修改人家已經(jīng)成熟的代碼,怕會有問題發(fā)生,但沒辦法。
經(jīng)過一番研究,最終確定,要在owin中加入跨域的代碼:
1.安裝 Microsoft.AspNet.WebApi.Cors
2.DynamicPowerShellApi.Owin的Startup.cs 加入 using System.Web.Http.Cors;
3.line116處加入跨域配置 config.EnableCors(new EnableCorsAttribute("", "", "*"));

然后重新生成,就可以了,多了10個警告回頭再說- -~,經(jīng)過測試,跨域問題解決。頁面可以正常顯示。

今天發(fā)現(xiàn)中文無法顯示,原來PowerShellRunner.cs的Line123中
? Regex.Replace(psOutput.LastOrDefault().ToString(), @"[^\u0000-\u007F]", string.Empty) 用正則匹配了所有的非拉丁字符并替換成空,會導致英文以外的文字都無法輸出。

解決辦法改正則
例如 ? Regex.Replace(psOutput.LastOrDefault().ToString(), @"", @"") 什么都不替換就是了

后端基本就是這個樣子了,如果大家有更好的方案可以交流下。
至于前端,用了下vue,感覺還是很不錯的。組件化真的挺方便。

向AI問一下細節(jié)

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

AI