程式碼:
'================================================== ========='
函數介紹:建立WebSite
'本函數使用ADSI,需要Administrators群組使用者權限
'函式名稱:CreateWebSite(Computer,IPAddr,PortNum,HostName,WebSiteDirectory,LogDirectory,WebSiteInfo,
GuestUserName,GuestUserPass,StartOrStop)
'用法:CreateWebSite 電腦名稱(一搬為LocalHost或127.0.0.1),網站IP位址,連接埠號,主機名稱,網站根目錄,,LOG檔案的目錄網站說明,網站造訪時所使用的帳號,網站造訪時所用帳號的口令,是否啟動站點
'例:CreateWebSite LocalHost,127.0.0.123,80,www.test.net,E:UserDataUserNum001,
E:UserDataUserNum001LogFiles,CnKnow.Com,IUSR_Num001_test.net,
abc888,True
'================================================== =
Function CreateWebSite(Computer,IPAddr,PortNum,HostName,WebSiteDirectory,LogDirectory,WebSiteInfo,
GuestUserName,GuestUserPass,StartOrStop)
Dim w3svc, WebServer, NewWebServer, NewDir
Dim Bindings, BindingString, NewBindings, SiteNum, SiteObj, bDone
On Error Resume Next
Err.Clear
'偵測是否能夠載入W3SVC服務(即WEB服務)
Set w3svc = GetObject(IIS:// & Computer & /w3svc)
If Err.Number <> 0 Then '顯示錯誤提示
response.write 無法開啟: &IIS:// & Computer & /w3svc
response.end
End If
'偵測是否有設定相同IP位址、連接埠及主機名稱的站點存在
BindingString = IPAddr & : & PortNum & : & HostName
For Each WebServer in w3svc
If WebServer.Class = IIsWebServer Then
Bindings = WebServer.ServerBindings
If BindingString = Bindings(0) Then
response.write IP位址衝突: & IPAddr & ,請偵測IP位址! .
Exit Function
End If
End If
Next
'確定一個不存在的站點編號做為新建站點編號,系統預設WebSite站點編號為1,因此從2開始
SiteNum=2
bDone = False
While (Not bDone)
Err.Clear
Set SiteObj = GetObject(IIS://&Computer&/w3svc/&SiteNum) '載入指定站點
If (Err.Number = 0) Then
'response.write Step_1網站&SiteNum&存在
SiteNum = SiteNum + 1
Else
'response.write Step_1網站&SiteNum&不存在
Err.Clear
Set NewWebServer = w3svc.Create(IIsWebServer,SiteNum) '建立指定站點
If (Err.Number <> 0) Then
'response.write Step_2網站&SiteNum&建立失敗
SiteNum = SiteNum + 1
Else
'response.write Step_2網站&SiteNum&建立成功
bDone = True
End If
End If
If (SiteNum > 50) Then '伺服器最大建立網站數
response.write 超出伺服器最大建立網站數,正在建立的網站的序號為: &SiteNum&.
response.end
End If
Wend
'進行站點基本配置
NewBindings = Array(0)
NewBindings(0) = BindingString
NewWebServer.ServerBindings = NewBindings
NewWebServer.ServerComment= WebSiteInfo
NewWebServer.AnonymousUserName= GuestUserName
NewWebServer.AnonymousUserPass= GuestUserPass
NewWebServer.KeyType = IIsWebServer
NewWebServer.FrontPageWeb = True
NewWebServer.EnableDefaultDoc = True
NewWebServer.DefaultDoc = Default.htm, Default.asp, Index.htm, Index.asp
NewWebServer.LogFileDirectory= LogDirectory
NewWebServer.SetInfo
Set NewDir = NewWebServer.Create(IIsWebVirtualDir, ROOT)
NewDir.Path = WebSiteDirectory
NewDir.AccessRead = true
NewDir.AppFriendlyName = 應用程式& WebSiteInfo
NewDir.AppCreate True
NewDir.AccessScript = True
Err.Clear
NewDir.SetInfo
If (Err.Number <> 0) Then
response.write 主目錄建立時發生錯誤.
response.end
End If
If StartOrStop = True Then
Err.Clear
Set NewWebServer = GetObject(IIS:// & Computer & /w3svc/ & SiteNum)
NewWebServer.Start
If Err.Number <> 0 Then
response.write 啟動網站時發生錯誤!
response.end
Err.Clear
End If
End If
response.write 網站建立成功,網站編號為:& SiteNum & ,網域為:& HostName
End Function
使用ASP設定指定站點CPU最大使用程度
程式碼:
'==================================================
'函數介紹:設定指定站台CPU最大使用程度
'本函數使用ADSI,需要Administrators群組使用者權限
'函數名稱:SetCPULimitVar (Computer,SiteNum,LimitVar)
'用法:SetCPULimitVar 電腦名,站點編號,最大限制值(100=1%,1000=10%)
'例:SetCPULimitVar LocalHost,2,2000
'==================================================
Function SetCPULimitVar(Computer,SiteNum,LimitVar)
Set MyObj001 = GetObject(IIS://&Computer&/W3SVC/&SiteNum)
'設定啟用CPU限制
MyObj001.CpuLimitsEnabled = True
'設定限制使用額度值
MyObj001.CpuLimitLogEvent=LimitVar
MyObj001.setinfo
Set MyObj001=Nothing
End Function
使用ASP啟動/停止指定WEB站點
程式碼:
'================================================== ========
'函數介紹:使用ASP啟動/停止指定WEB站點
'本函數使用ADSI,需要Administrators群組使用者權限
'函式名稱:AdminWebSite(Computer,WebSiteNum,DoWhat)
'用法:AdminWebSite(電腦名稱,網站編號,啟動/停止)
'範例:啟動127.0.0.1電腦上站點編號為1的站點
'AdminWebSite 127.0.0.1,1,1
'例:停止127.0.0.1電腦上站點編號為1的站點
'AdminWebSite 127.0.0.1,1,0
'================================================== ======
Function AdminWebSite(Computer,WebSiteNum,DoWhat)
On Error Resume Next
Set objServer = GetObject(IIS:// & Computer & /W3SVC/ & WebSiteNum)
If Err.Number <> 0 Then
Response.Write Now & . 錯誤碼: & Hex(Err)& - & 無法開啟指定網站<br>
End If
if Dowhat=1 then
'使用Start啟動站點
objServer.Start
If Err.Number <> 0 Then
Response.Write 無法啟動指定Web網站<br>
else
Response.Write 已經啟動指定Web網站<br>
End If
elseif DoWhat=0 then
'使用Stop停止站點
objServer.Stop
If Err.Number <> 0 Then
Response.Write 無法停止指定Web網站<br>
else
Response.Write 已停止指定Web網站<br>
End If
end if
End Function
使用ASP列出伺服器WEB站點信息
程式碼:
'================================================== ====
'函數介紹:列出目前伺服器WEB網站信息
'本函數使用ADSI,需要Administrators群組使用者權限
'函數名稱:ListWebSite (Computer,Num)
'用法:ListWebSite (電腦名稱,顯示網站數量)
'例:顯示127.0.0.1計算機上1000個站點信息
'ListWebSite 127.0.0.1,1000
'================================================== ===
Function ListWebSite(Computer,Num)
On Error Resume Next
Set SiteObj = GetObject(IIS://&Computer&/w3svc/&i)
for i=0 to Num
Err.Clear
if Err.Number=0 then
response.write <p><b>以下顯示為電腦:&Computer&上所有站台資訊</b></p>
ShowWebSite = SiteObj.Get(ServerBindings) '取得站台IP位址:埠:主機頭
Info=split(ShowWebSite(0),:)
response.write 站號:&i&<br>
response.write 站台IP位址:&Info(0)&<br>
response.write 網站連接埠:&Info(1)&<br>
response.write 站台主機頭:&Info(2)&<br><br>
end if
next
set SiteOjb=nothing
End Function
使用ASP刪除指定IIS站點
程式碼:
'================================================== =====
'函數介紹:刪除指定IIS站點
'本函數使用ADSI,需要Administrators群組使用者權限
'函式名稱:DelWebSite (Computer,SiteNum)
'用法:DelWebSite 電腦名,網站編號
'例:DelWebSite 127.0.0.1,2
'================================================== =====
Function DelWebSite(Computer,SiteNum)
Set W3SVC = GetObject(IIS://&Computer&/w3svc)
W3SVC.delete IIsWebServer,SiteNum
response.write 刪除成功!
End Function
透過ASP管理NT帳號
程式碼:
'================================================== ======
'函數介紹:透過ASP管理NT帳號
'本函數使用ADSI,需要Administrators群組使用者權限
'================================================== ===
'填加用戶
'函數用法:AddUser(Computer,UserName,PassWord,FullName,Info)
'參數:電腦名稱,帳號名稱,帳號密碼,帳號全名,帳號說明
'範例:AddUser 127.0.0.1,Test,Test,測試管理員帳號,本帳號透過ASP填加
'修改指定使用者基本資訊
'函數用法:EditUser(Computer,UserName,OldPassWord,PassWord,FullName,Info)
'參數:電腦名稱,帳號名稱,帳號密碼,帳號全名,帳號說明
'例:EditUser 127.0.0.1,Test,Test2,測試管理員帳號修改,本帳號已透過ASP修改過
'刪除指定用戶
'函數用法:DelUser(Computer,UserName)
'參數:電腦名稱,使用者名稱'
'例:DelUser 127.0.0.1,Test
================================================== ======
Function AddUser(Computer,UserName,PassWord,FullName,Info)
'執行建立帳號指令
Set ComputerObj = GetObject(WinNT://&Computer)
Set NewUser = ComputerObj.Create( User , UserName )
NewUser.SetInfo
'進行帳號設定
NewUser.SetPassword ( PassWord ) '帳號密碼
NewUser.FullName = FullName '帳號全名
NewUser.Description = Info '帳號說明
NewUser.UserFlags = &H10000 '&H20000(使用者下次登入時須變更密碼) &H0040(使用者不得變更密碼) &H10000(密碼永久正確) &H0002(帳號暫時停用)
NewUser.SetInfo
response.write 帳號&UserName&建立成功!
Set ComputerObj=nothing
End Function
Function EditUser(Computer,UserName,OldPassWord,PassWord,FullName,Info)
'讀取使用者資訊
Set ChangeUserObj = GetObject(WinNT://&Computer&/&UserName&,User)
'修改帳號密碼
if PassWord<> then
ChangeUserObj.SetPassword PassWord
response.write 帳號密碼修改成功! <br>
end if
'修改帳號全名
if FullName<> then
UserFullName = ChangeUserObj.get(FullName)
ChangeUserObj.FullName = FullName
ChangeUserObj.SetInfo
response.write 帳號全名修改成功! <br>
end if
'修改帳號說明
if Info<> then
UserFullName = ChangeUserObj.get(Description)
ChangeUserObj.Description = Info
ChangeUserObj.SetInfo
response.write 帳號說明修改成功! <br>
end if
Set ChangeUserObj=nothing
End Function
Function DelUser(Computer,UserName)
Set DelUserObj = GetObject(WinNT://&Computer&/&UserName)
If Err = &H800401E4 Then
Response.Write 使用者&UserName&不存在
Response.End
End If
Set DelObj = GetObject(DelUserObj.Parent)
DelObj.Delete User, DelUserObj.Name
Set DelUserObj = Nothing
Set DelObj = Nothing
Response.Write 刪除成功
End Function
使用ASP控制指定網站解析腳本語言函數
程式碼:
Function AdminAegis(Computer,SiteNum)
Set IIsWebServiceObj = GetObject(IIS://&Computer&/W3SVC/&SiteNum)
dim Aegis(1)
Aegis(0)=.asp,C:WINNTsystem32inetsrvasp.dll,5,GET,HEAD,POST,TRACE
'Aegis(1)=.aspx,C:WINNTMicrosoft.NETFrameworkv1.1.4322aspnet_isapi.dll,1,GET,HEAD,
POST,DEBUG
'解析其它檔案請同樣使用Aegis(Num)=這種格式,記得要將dim Aegis(Num)定義
'.htw,C:WINNTsystem32webhits.dll,3,GET,HEAD,POST
'.ida,C:WINNTsystem32idq.dll,7,GET,HEAD,POST
'.idq,C:WINNTsystem32idq.dll,7,GET,HEAD,POST
'.asp,C:WINNTsystem32inetsrvasp.dll,5,GET,HEAD,POST,TRACE
'.cer,C:WINNTsystem32inetsrvasp.dll,5,GET,HEAD,POST,TRACE
'.cdx,C:WINNTsystem32inetsrvasp.dll,5,GET,HEAD,POST,TRACE
'.asa,C:WINNTsystem32inetsrvasp.dll,5,GET,HEAD,POST,TRACE
'.idc,C:WINNTsystem32inetsrvhttpodbc.dll,5,GET,POST<br>
'.shtm C:WINNTsystem32inetsrvssinc.dll,5,GET,POST<br>
'.shtml C:WINNTsystem32inetsrvssinc.dll,5,GET,POST<br>
'.stm C:WINNTsystem32inetsrvssinc.dll,5,GET,POST<br>
'.asax C:WINNTMicrosoft.NETFrameworkv1.1.4322aspnet_isapi.dll,5,GET,HEAD,POST,
DEBUG
'.ascx,C:WINNTMicrosoft.NETFrameworkv1.1.4322aspnet_isapi.dll,5,GET,HEAD,
POST,DEBUG
'.ashx,C:WINNTMicrosoft.NETFrameworkv1.1.4322aspnet_isapi.dll,1,GET,HEAD,
POST,DEBUG
'.asmx,C:WINNTMicrosoft.NETFrameworkv1.1.4322aspnet_isapi.dll,1,GET,HEAD,
POST,DEBUG
'.aspx,C:WINNTMicrosoft.NETFrameworkv1.1.4322aspnet_isapi.dll,1,GET,HEAD,
POST,DEBUG
'.axd,C:WINNTMicrosoft.NETFrameworkv1.1.4322aspnet_isapi.dll,1,GET,HEAD,
POST,DEBUG
'.vsdisco,C:WINNTMicrosoft.NETFrameworkv1.1.4322aspnet_isapi.dll,1,GET,HEAD,
POST,DEBUG
'.rem,C:WINNTMicrosoft.NETFrameworkv1.1.4322aspnet_isapi.dll,1,GET,HEAD,
POST,DEBUG
'.soap,C:WINNTMicrosoft.NETFrameworkv1.1.4322aspnet_isapi.dll,1,GET,HEAD,
POST,DEBUG
'.config,C:WINNTMicrosoft.NETFrameworkv1.1.4322aspnet_isapi.dll,5,GET,HEAD,
POST,DEBUG
'.cs,C:WINNTMicrosoft.NETFrameworkv1.1.4322aspnet_isapi.dll,5,GET,HEAD,
POST,DEBUG
'.csproj,C:WINNTMicrosoft.NETFrameworkv1.1.4322aspnet_isapi.dll,5,GET,HEAD,
POST,DEBUG
'.vb,C:WINNTMicrosoft.NETFrameworkv1.1.4322aspnet_isapi.dll,5,GET,HEAD,
POST,DEBUG
'.vbproj,C:WINNTMicrosoft.NETFrameworkv1.1.4322aspnet_isapi.dll,5,GET,HEAD,
POST,DEBUG
'.webinfo,C:WINNTMicrosoft.NETFrameworkv1.1.4322aspnet_isapi.dll,5,GET,HEAD,
POST,DEBUG
'.licx,C:WINNTMicrosoft.NETFrameworkv1.1.4322aspnet_isapi.dll,5,GET,HEAD,
POST,DEBUG
'.resx,C:WINNTMicrosoft.NETFrameworkv1.1.4322aspnet_isapi.dll,5,GET,HEAD,
POST,DEBUG
'.resources,C:WINNTMicrosoft.NETFrameworkv1.1.4322aspnet_isapi.dll,5,GET,
HEAD,POST,DEBUG
IIsWebServiceObj.ScriptMaps=Aegis
IIsWebServiceObj.SetInfo
'顯示支援腳本語言
response.write 目前網站支援解析清單:<br>
For ValueIndex = 0 To UBound(IIsWebServiceObj.ScriptMaps)
response.write IIsWebServiceObj.Get(ScriptMaps)(ValueIndex)
response.write <br>
Next
End Function
使用ASP列出NT用戶群組及用戶
程式碼:
'================================================== ======
'函數介紹:列出NT用戶群組及用戶
'本函數使用ADSI,需要Administrators群組使用者權限
'函式名稱:ListGroup(Computer)
'用法:ListGroup(電腦名稱)
'範例:顯示127.0.0.1計算機NT用戶群組及用戶
'ListGroup 127.0.0.1
'================================================== ======
Function ListGroup(Computer)
response.write <p><b>以下為電腦&Computer&系統使用者群組及使用者清單</b></p>
Set ComputerObj = GetObject(WinNT://&Computer)
ComputerObj.Filter = Array(Group)
For Each Member in ComputerObj
Response.Write 使用者群組:&Member.Name&<br>
ListUser Computer,Member.Name
Next
end Function
'列出指定用戶群組用戶
Function ListUser(Computer,Group)
Set UserObj = GetObject(WinNT://&Computer&/&Group)
For Each Member in UserObj.Members
Response.write 群組中使用者:&Member.Name &<br>
Next
End Function
IIS 提供了IIS Admin Objects,讓使用者可以透過程式來管理IIS。 IIS Admin Objects 是基於Microsoft Active Directory Service Interfaces (ADSI)。任何支援Automation 的程式語言,如ASP 中的VBScript/JScript,Visual Basic, Java, 或C++ 都能使用它。
您可以參考以下的ASP 範例程式來修改IIS 預設站點的位址:
<%
Set IISOBJ = GetObject(IIS://MyServer/w3svc/1/root)
IISOBJ.Path = D:newroot
IISOBJ.SetInfo
Set IISOBJ=Nothing
%>
注意:使用者必須對IIS Metabase 有足夠的權限。
關於如何用程式來管理IIS,您可以到MSDN 參考以下的文章:
Administering IIS Programmatically
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/iisref/html/psdk/asp/aint7e9l.asp