本文主要介绍了Html JS PowerShell如何构建一个Web版的AD管理系统。很详细,有一定的参考价值。感兴趣的朋友一定要看完!
用Flask调用Powershell API实现运维管理系统。
其实原理是一样的,主要是使用Django/Flask框架,Bootstrap作为前端,然后后台python调用PowerShell API实现查询。
但是后台同时有powershell和python,这让我很不爽。我只想用PowerShell,所以我有下面的折腾。
前往演示
首页是一个简单的html。为了好看,使用了引导框架。
Bootstrap-table用于通过表格显示查询到的数据,还具有导出、排序和分页功能。
事件控制:jquery、ajax
是后台PowerShell实现的API。网上有很多。我在豆豆的博客中尝试了HttpListener的模块,以及微软员工制作的web框架https://github.com/PowerShell/Polaris。没有问题。应该是PowerShell的Web框架。
1.在后台执行PowerShell
import-modulec : \ users \ yuan . Li \ Documents \ GitHub \ Powershell \ httplistener . PS m1
start-httplistener-verb-authnone-port 8888注意:我对HTTPListener.psm1的内容做了一些更改,以避免跨域限制。
#区域跨域
$回应。AddHeader('访问控制-允许-来源',' * ');
$回应。添加标题(“访问控制-允许-标题”、“身份验证”);
$回应。AppendHeader('访问控制-允许-头','原始,无缓存,X-请求-有,如果-修改-自,Pragma,上次修改,缓存控制,过期,内容类型,X-E4M-有');
#endregion跨域未被很好地理解。我在网上找到的,直接贴上去,但是真的很管用。
2.没有python和flask/django框架,所有控件都由JS实现。
首先,使用Geturl()拼接powershell调用的url。
var $ PS webpai=' http://10 . 128 . 9/?命令='
//构建WebapiURL
functionGetURL(选项){ 0
//切换网址
开关(选项){ 0
案例“邮件”:
var $ cmdlet=' Get-ADUser-Filter * | selectName,SamAccountName,user principalname | Where-Object { $ _。UserPrincipalName-ne$null}”
打破;
(=NationalBureauofStandards)国家标准局
p; case "computer":
var $cmdlet = "Get-ADComputer -Filter * -Property name,DNSHostName,OperatingSystem,OperatingSystemServicePack,OperatingSystemVersion"
break;
}
var $url = $pswebpai + $cmdlet
//alert($url)
return $url
}
然后,用ajax实现异步执行
//当点击查询按钮的时候执行 $QueryButton.click(function () { //获取下拉菜单值 var option = $("#myselect").val(); var $url = GetURL(option); $.ajax({ url: $url, dataType: 'json', contentType: 'application/json', charset: 'UTF-8', success: function (result) { console.log("Success"); //console.log(result); CommonTableInit(option, result); //初始化表格的函数 }, error: function (result) { alert("error!"); } }); });
这样一个Web查询功能就实现了。而且不用装python,flask\django框架了,部署的话也很简单,直接挂个地址就好了。(flask版试了在IIS下部署,没成功- -~)
后续还可以扩展增删改查功能。
目前唯一的问题就是HTTPListener有时查询会报错退出,估计换个健壮点的PowerShell Web框架就可以了。
其他思路:
1.完全用PowerShell Web框架去实现。
2.dotNet Core Web应用,生成exe格式的自托管console应用程序,直接双击执行。(WebAPI,C#调用powershell)
×××链接:
http://down.51cto.com/data/2441697
跨域这块儿一直没搞明白,用jsonp的话,debug的响应里能看到返回的json对象,但是console.log(返回的json对象);的话,则看不到任何返回的json对象数据,ajax的回调函数也没有接收到json对象,感觉就好像而是直接被浏览器接收了。。。换了好几个powershell WebAPI都是这个问题。直接访问powershell webapi也都是有数据的。
以上是“Html+JS+PowerShell如何打造Web版AD管理系统”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/114459.html