2013-07-15 78 views
1

如何使用批處理文件在IIS6中獲取網站的根目錄/主目錄?IIS6 bat文件 - 主目錄

我的情景:

我創建總結和IIS站點的報告工具。我正在使用批處理文件並運行iisweb/query來獲取所有網站,然後遍歷結果並使用iisvdir/query「Website Name」獲取虛擬目錄。

但是它必須與IIS6向後兼容,並且無法獲取該網站的主目錄。

+0

所以我想你需要它與IIS6和IIS7一起工作?我們可以忽略IIS5嗎?你已經有了確定IIS版本的方法嗎? – RGuggisberg

+0

發佈你到目前爲止所以我們沒有猜測。 – RGuggisberg

+0

@Ruggisberg - 它只是IIS6和IIS7。該版本由每臺服務器上的配置數據庫設置。在IIS7中,我可以獲得所需的所有詳細信息,但在IIS6中我無法獲得。我可以使用iisweb/query和使用iisvdir/query的虛擬目錄來獲取名稱和綁定。但我無法獲取網站的主目錄。 –

回答

2

我不認爲你可以直接從批處理文件中做到這一點,但你應該可以從一個VBScript,你可以從一個批處理文件調用。

訣竅是使用IIS WMI provider它可以訪問IIS元數據庫。例如,下面的腳本應該回顯本地服務器上每個虛擬目錄的名稱和路徑。

set provider = GetObject("winmgmts://localhost/root/MicrosoftIISv2") 
set results = provider.ExecQuery("SELECT Name,Path from IISWebVirtualDirSetting") 
for each item in results 
    WScript.Echo item.Name 
    WScript.Echo item.Path 
next 

如果保存該腳本iispaths.vbs(就像一個例子),然後你可以從一個批處理文件調用它:

cscript //nologo iispaths.vbs 

可惜我用不上到一臺裝有IIS6的機器上,所以目前我無法測試這個功能,但如果你在啓動時遇到任何問題,請在評論中告訴我,我會盡我所能解決問題。

+0

非常感謝 –

1

我沒有IIS6服務器,但是,經過一番搜索,我發現:

  1. IIS6使用%SystemRoot%\system32\inetsrv\MetaBase.xml%SystemRoot%\system32\inetsrv\MBSchema.xml存儲配置(The IIS Metabase (IIS 6.0));
  2. 如果你的服務器沒有經常更改主目錄,應該更新這些xml;
  3. 使用命令行解析器(像xmlstartlet),則可以從IIsWebVirtualDir(根據Metabase Structure)節點提取Path屬性,使用XPath

隨着xmlstartlet,像下面的命令時,將輸出根路徑:

xml sel -t -v "//IIsWebVirtualDir[@Location='/LM/W3SVC/1/ROOT']/@Path" "%SystemRoot%\system32\inetsrv\MetaBase.xml" 

也許模式需要被校正。 這可以是一種命令行方式。我無法測試它,因爲我沒有任何IIS6服務器,我也無法獲得任何MetaBase.xml示例。

+0

我可以確認該文件可用於iis6。我選擇了其他答案,因爲它不需要任何安裝或任何東西。 –