作者:小丸子2502856277_253 | 来源:互联网 | 2023-05-19 00:40
作为.net开发,在window环境下,不得不熟悉些脚本语言,来减轻些日常开发中所遇到的一些繁杂的事情,比如自动发布网站,自动发布网站等等。WMIwindows管理程序接
作为.net开发,在window环境下,不得不熟悉些脚本语言,来减轻些日常开发中所遇到的一些繁杂的事情,比如自动发布网站,自动发布网站等等。
WMI windows管理程序接口,可用各种与语言调用,方便起见,我选择Vbscript脚本语言来实现一键式发布网站
所需WMI对象
Set oWebAdmin=GetObject("winmgmts:root\WebAdministration")
oWebAdmin 提供管理 site Application VirtualDirectory 等对象的管理,调用对应对象的所提供的方法即可实现所需功能
获取网站名称,建立IIS后系统会自动创建一个默认网站,对应的ID为1
'---------------------------
'-----获取网站名称----------
'---------------------------
Sub GetSiteName()
Set Sites=oWebAdmin.InstancesOf("Site")
For Each site In Sites
If site.Id=1 Then
strWebSiteName=site.Name
Exit For
End If
next
End Sub
建立虚拟目录,需要三个参数 应用程序路径,物理路径,网站名称
'---------------------------
'-----创建虚拟目录----------
'---------------------------
Sub CreateVD()
Set vds=oWebAdmin.InstancesOf("VirtualDirectory")
For Each vd In vds
If vd.PhysicalPath=strPyhicPath Then
'删除应用程序
DeleteApp strAppPath
vd.Delete_
Exit for
End If
Next
Set vd=oWebAdmin.Get("VirtualDirectory")
vd.Create strAppPath,"/",strPyhicPath,strWebSiteName
End Sub
创建应用程序 ,也需要三个参数 应用程序路径,物理路径,网站名称
'---------------------------
'-----创建应用程序----------
'---------------------------
Sub CreateApp(apppath,webSiteName,pypath)
On Error Resume next
App.Create apppath,webSiteName,pypath
If Err.Number<>0 Then
WScript.Echo "创建应用程序错误:"&apppath&"错误码:"&Err.Number
WScript.Sleep 500
else
WScript.Echo "正在建立应用程序:"&apppath&"..."
WScript.Sleep 1000
End if
End Sub
通过以上三个步骤即可自动创建一个虚拟目录,并转换为应用程序,根据IIS版本不同,调用WMI的对象也不同,所以以上代码只正对IIS7
全部代码如下
Dim WshShell
Set WshShell = WScript.CreateObject("Wscript.Shell")
If LCase(Right(WScript.FullName,11))="wscript.exe" Then
WshShell.Run "cmd /k cscript.exe //nologo " & Chr(34)& WScript.ScriptFullName & Chr(34)
WScript.Quit
End if
strWebSiteName=""
strPyhicPath=InputBox("请输入要发布网站的路径"&vbnewline&vbnewline&"如:D:\xxxx\xxx"&vbNewLine&vbNewLine&"请确保是否存在网站:Default Web Site","提示")
If(strPyhicPath="") Then
MsgBox("请输入路径")
WScript.Quit
End if
ary=Split(strPyhicPath,"\")
strAppPath="/"&ary(UBound(ary))
Set oWebAdmin=GetObject("winmgmts:root\WebAdministration")
GetSiteName
CreateVD
Set App=oWebAdmin.Get("Application")
CreateApp strAppPath&"/Web", strWebSiteName,strPyhicPath&"\Web"
CreateApp strAppPath&"/WebService", strWebSiteName,strPyhicPath&"\WebService"
CreateIISAppByFile(strPyhicPath&"\WebService")
WScript.Echo "处理完毕..."
WScript.Sleep(1000)
'---------------------------
'-----获取网站名称----------
'---------------------------
Sub GetSiteName()
Set Sites=oWebAdmin.InstancesOf("Site")
For Each site In Sites
If site.Id=1 Then
strWebSiteName=site.Name
Exit For
End If
next
End Sub
'---------------------------
'-----创建虚拟目录----------
'---------------------------
Sub CreateVD()
Set vds=oWebAdmin.InstancesOf("VirtualDirectory")
For Each vd In vds
If vd.PhysicalPath=strPyhicPath Then
'删除应用程序
DeleteApp strAppPath
vd.Delete_
Exit for
End If
Next
Set vd=oWebAdmin.Get("VirtualDirectory")
vd.Create strAppPath,"/",strPyhicPath,strWebSiteName
End Sub
'---------------------------
'-----循环创建Webservice----
'---------------------------
Sub CreateIISAppByFile(strFolder)
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oFolder = oFSO.GetFolder(strFolder)
For Each x In oFolder.SubFolders
currAppPath=strAppPath&"/WebService/"&x.Name
CreateApp currAppPath,strWebSiteName,x.Path
Next
End Sub
'---------------------------
'-----创建应用程序----------
'---------------------------
Sub CreateApp(apppath,webSiteName,pypath)
On Error Resume next
App.Create apppath,webSiteName,pypath
If Err.Number<>0 Then
WScript.Echo "创建应用程序错误:"&apppath&"错误码:"&Err.Number
WScript.Sleep 500
else
WScript.Echo "正在建立应用程序:"&apppath&"..."
WScript.Sleep 1000
End if
End Sub
'---------------------------
'-----删除应用程序----------
'---------------------------
Sub DeleteApp(apppath)
Set oApps = oWebAdmin.InstancesOf("Application")
Set Re=New RegExp
p=Replace(apppath,".","\.")
re.Pattern=p&".*"
re.IgnoreCase=false
For Each oApp In oApps
If re.Test(oApp.Path) then
WScript.Echo("正在删除应用程序:"& oApp.Path)
oApp.Delete_
WScript.Sleep(200)
End if
Next
End sub