概觀
元素 <ftpServer>
的 <site>
元素會指定 FTP 月臺之 FTP 功能的月臺層級設定。
在 IIS 6.0 中,FTP 服務的設定會儲存在中繼基底的個別區段中,而不是網站。 在 IIS 7 和更新版本中,FTP 設定會儲存在相同檔案內的 <site>
ApplicationHost.config 檔案,以及 <siteDefaults>
儲存網站設定的專案。 因此,元素中指定的 <ftpServer>
設定無法委派,也無法在元素內 <location>
指定。
注意
其他 FTP 設定會儲存在 <system.ftpServer>
ApplicationHost.config檔案的 區段中,而且這些設定是在元素內 <location>
指定。
相容性
版本 | 備註 |
---|---|
IIS 10.0 | 在 <ftpServer> IIS 10.0 中未修改專案。 |
IIS 8.5 | 未 <ftpServer> 在 IIS 8.5 中修改專案。 |
IIS 8.0 | 在 IIS 8.0 中未修改專案 <ftpServer> 。 |
IIS 7.5 | 元素 <ftpServer> 隨附為 IIS 7.5 的功能。 |
IIS 7.0 | 元素 <ftpServer> 是在 FTP 7.0 中引進,這是 IIS 7.0 的個別下載。 |
IIS 6.0 | 元素 <ftpServer> 及其子項目會取代位於 LM/MSFTPSVC 中繼基底路徑中的 IIS 6.0 FTP 設定。 |
使用 Windows 7 和 Windows Server 2008 R2 時,FTP 7.5 服務會隨附為 IIS 7.5 的功能,因此不再需要下載 FTP 服務。
安裝程式
若要支援 Web 服務器的 FTP 發佈,您必須安裝 FTP 服務。 若要這樣做,請使用下列步驟。
Windows Server 2012 或 Windows Server 2012 R2
在工作列上,按一下 [伺服器管理員]。
在伺服器管理員中,按一下 [管理]功能表,然後按一下 [新增角色和功能]。
在 [ 新增角色和功能 精靈] 中,按 [下一步]。 選取安裝類型,然後按 [ 下一步]。 選取目的地伺服器,然後按 [ 下一步]。
在 [ 伺服器角色] 頁面上,展開 [Web 服務器] ([IIS) ],然後選取 [ FTP 伺服器]。
注意
支援 ASP。FTP 服務的成員資格驗證或 IIS 管理員驗證,除了FTP 服務之外,您還需要選取FTP 擴充性。
.
按 [下一步],然後在 [ 選取功能 ] 頁面上,再次按 [ 下一步 ]。
在 [確認安裝選項] 頁面上,按一下 [安裝]。
在 [結果] 頁面上,按一下 [關閉]。
Windows 8 或Windows 8.1
在 [開始] 畫面上,將指標全部移至左下角,以滑鼠右鍵按一下 [開始] 按鈕,然後按一下[主控台]。
在主控台中,按一下 [程式和功能],然後按一下 [開啟或關閉 Windows 功能]。
展開 [Internet Information Services],然後選取 [FTP 伺服器]。
注意
支援 ASP。FTP 服務的成員資格驗證或 IIS 管理員驗證,您也必須選取 [FTP 擴充性]。
按一下 [確定]。
按一下 [關閉] 。
Windows Server 2008 R2
在工作列上,按一下 [開始],指向 [系統管理工具],然後按一下[伺服器管理員]。
在[伺服器管理員階層] 窗格中,展開 [角色],然後按一下 [Web 服務器] (IIS) 。
在 [Web 服務器 (IIS) ] 窗格中,捲動至 [ 角色服務 ] 區段,然後按一下 [ 新增角色服務]。
在 [新增角色服務精靈] 的 [選取角色服務] 頁面上,展開[FTP 伺服器]。
選取 [FTP 服務]。
注意
支援 ASP。FTP 服務的成員資格驗證或 IIS 管理員驗證,您也必須選取 [FTP 擴充性]。
按一下 [下一步] 。
在 [確認安裝選項] 頁面上,按一下 [安裝]。
在 [結果] 頁面上,按一下 [關閉]。
Windows 7
在工作列上,按一下 [開始],然後按一下[主控台]。
在主控台中,按一下 [程式和功能],然後按一下 [開啟或關閉 Windows 功能]。
展開 [Internet Information Services],然後展開 [FTP 伺服器]。
選取 [FTP 服務]。
注意
支援 ASP。FTP 服務的成員資格驗證或 IIS 管理員驗證,您也必須選取 [FTP 擴充性]。
按一下 [確定]。
Windows Server 2008 或 Windows Vista
從下列 URL 下載安裝套件:
請遵循下列逐步解說中的指示來安裝 FTP 服務:
作法
如何啟用或停用 FTP 網站的匿名驗證
(IIS) 管理員開啟 Internet Information Services:
如果您使用 Windows Server 2012 或 Windows Server 2012 R2:
- 在工作列上,依序按一下 [伺服器管理員]、[工具],然後按一下 [Internet Information Services] ([IIS) 管理員]。
如果您使用 Windows 8 或 Windows 8.1:
- 按住Windows鍵,按字母X,然後按一下[主控台]。
- 按一下 [ 系統管理工具],然後按兩下 [Internet Information Services] ([IIS) 管理員]。
如果您使用 Windows Server 2008 或 Windows Server 2008 R2:
- 在工作列上,按一下 [ 開始],指向 [ 系統管理工具],然後按一下 [ Internet Information Services (IIS) 管理員]。
如果您使用 Windows Vista 或 Windows 7:
- 在工作列上,按一下 [開始],然後按一下[主控台]。
- 按兩下 [ 系統管理工具],然後按兩下 [Internet Information Services] ([IIS) 管理員]。
在 [ 連線 ] 窗格中,展開伺服器名稱、展開 [月臺] 節點,然後按一下月臺的名稱。
在網站的 [ 首頁] 窗格中,按兩下 [FTP 驗證 ] 功能。
在 [ FTP 驗證] 頁面上,選取 [匿名驗證]。
在 [ 動作] 窗格中,按一下 [ 啟用 ] 以啟用匿名驗證,或按一下 [ 停用 ] 以停用匿名驗證。
如何使用 FTP 網站精靈建立具有匿名讀取存取的 FTP 網站
(IIS) 管理員開啟 Internet Information Services:
如果您使用 Windows Server 2012 或 Windows Server 2012 R2:
- 在工作列上,依序按一下 [伺服器管理員]、[工具],然後按一下 [Internet Information Services] ([IIS) 管理員]。
如果您使用 Windows 8 或 Windows 8.1:
- 按住Windows鍵,按字母X,然後按一下[主控台]。
- 按一下 [ 系統管理工具],然後按兩下 [Internet Information Services] ([IIS) 管理員]。
如果您使用 Windows Server 2008 或 Windows Server 2008 R2:
- 在工作列上,按一下 [ 開始],指向 [ 系統管理工具],然後按一下 [ Internet Information Services (IIS) 管理員]。
如果您使用 Windows Vista 或 Windows 7:
- 在工作列上,按一下 [開始],然後按一下[主控台]。
- 按兩下 [ 系統管理工具],然後按兩下 [Internet Information Services] ([IIS) 管理員]。
在 [ 連線 ] 窗格中,按一下樹狀結構中的 [月臺] 節點。
以滑鼠右鍵按一下樹狀結構中的[月臺]節點,然後按一下 [新增 FTP 站台],或按一下 [動作] 窗格中的 [新增 FTP 站台]。
當 [ 新增 FTP 站 台精靈] 出現時:
在 [FTP 網站名稱 ] 方塊中輸入 「我的新 FTP 網站」。
針對 [實體路徑 ] 方塊,您可以使用下列其中一個選項來指定內容目錄:
- 按一下省略號 (...) 按鈕,然後流覽至包含 FTP 網站內容的資料夾。
- 在方塊中輸入內容資料夾的路徑。 請注意,如果您選擇輸入路徑,您可以在路徑中使用環境變數。 例如,您可以針對內容目錄使用 「%SystemDrive%\inetpub\ftproot」。
當您完成這些專案之後,請按 [下一步]。
在 [新增 FTP 站 台精靈] 的第二個頁面上:
從 [IP 位址] 下拉式清單中選擇 FTP 網站的 IP 位址 ,或選擇接受 [所有未指派] 的預設選取專案。
在 [ 埠 ] 方塊中輸入 FTP 網站的 TCP/IP 埠。 根據預設,FTP 月臺和用戶端會使用埠 21。 (注意:若要指定隱含 FTPS,您必須使用埠 990.)
若要使用 FTP 虛擬主機名稱,請選取 [ 啟用虛擬主機名稱] 的方塊,然後在 [ 虛擬主機 ] 方塊中輸入虛擬主機名稱。
針對 SSL 選項,請選擇下列其中一個選項:
- 選取 [無 SSL ] 以停用 SSL 選項。
- 選取 [允許 SSL ] 以允許 FTP 用戶端在與 FTP 伺服器連線時選擇性地使用 FTP over SSL。
- 選取 [要求 SSL ] 以允許 FTP 用戶端在與 FTP 伺服器連線時一律使用 FTP over SSL。
- 如果您選擇 [允許 SSL ] 或 [ 需要 SSL],請從 [ SSL 憑證 ] 下拉式功能表中選擇憑證。
當您完成這些專案之後,請按 [下一步]。
在精靈的下一頁:
- 針對[驗證] 設定選取 [匿名]。
- 針對 [授權 設定],從 [ 允許存取] 下拉式清單中選擇 [匿名使用者]。
- 針對 [許可權]選項選取[讀取]。
- 當您完成這些專案時,請按一下 [ 完成]。
如何啟用或停用 FTP 月臺的基本驗證
(IIS) 管理員開啟 Internet Information Services:
如果您使用 Windows Server 2012 或 Windows Server 2012 R2:
- 在工作列上,依序按一下 [伺服器管理員]、[工具],然後按一下 [Internet Information Services] ([IIS) 管理員]。
如果您使用 Windows 8 或 Windows 8.1:
- 按住Windows鍵,按字母X,然後按一下[主控台]。
- 按一下 [ 系統管理工具],然後按兩下 [Internet Information Services] ([IIS) 管理員]。
如果您使用 Windows Server 2008 或 Windows Server 2008 R2:
- 在工作列上,按一下 [ 開始],指向 [ 系統管理工具],然後按一下 [ Internet Information Services (IIS) 管理員]。
如果您使用 Windows Vista 或 Windows 7:
- 在工作列上,按一下 [開始],然後按一下[主控台]。
- 按兩下 [ 系統管理工具],然後按兩下 [Internet Information Services] ([IIS) 管理員]。
在 [ 連線 ] 窗格中,展開伺服器名稱、展開 [月臺] 節點,然後按一下月臺的名稱。
在網站的 [ 首頁] 窗格中,按兩下 [FTP 驗證 ] 功能。
在 [ FTP 驗證] 頁面上,選取 [基本驗證]。
在 [ 動作] 窗格中,按一下 [ 啟用 ] 以啟用基本驗證,或按一下 [ 停用 ] 以停用基本驗證。
如何使用 FTP 月臺精靈建立具有基本驗證和讀取/寫入存取權的 FTP 網站
(IIS) 管理員開啟 Internet Information Services:
如果您使用 Windows Server 2012 或 Windows Server 2012 R2:
- 在工作列上,依序按一下 [伺服器管理員]、[工具],然後按一下 [Internet Information Services] ([IIS) 管理員]。
如果您使用 Windows 8 或 Windows 8.1:
- 按住Windows鍵,按字母X,然後按一下[主控台]。
- 按一下 [ 系統管理工具],然後按兩下 [Internet Information Services] ([IIS) 管理員]。
如果您使用 Windows Server 2008 或 Windows Server 2008 R2:
- 在工作列上,按一下 [ 開始],指向 [ 系統管理工具],然後按一下 [ Internet Information Services (IIS) 管理員]。
如果您使用 Windows Vista 或 Windows 7:
- 在工作列上,按一下 [開始],然後按一下[主控台]。
- 按兩下 [ 系統管理工具],然後按兩下 [Internet Information Services] ([IIS) 管理員]。
在 [ 連線 ] 窗格中,按一下樹狀結構中的 [月臺] 節點。
以滑鼠右鍵按一下樹狀結構中的[月臺]節點,然後按一下 [新增 FTP 站台],或按一下 [動作] 窗格中的 [新增 FTP 站台]。
當 [ 新增 FTP 站 台精靈] 出現時:
在 [FTP 網站名稱 ] 方塊中輸入 「我的新 FTP 網站」。
針對 [實體路徑 ] 方塊,您可以使用下列其中一個選項來指定內容目錄:
- 按一下省略號 (...) 按鈕,然後流覽至包含 FTP 網站內容的資料夾。
- 在方塊中輸入內容資料夾的路徑。 請注意,如果您選擇輸入路徑,您可以在路徑中使用環境變數。 例如,您可以針對內容目錄使用 「%SystemDrive%\inetpub\ftproot」。
當您完成這些專案之後,請按 [下一步]。
在 [新增 FTP 站 台精靈] 的第二個頁面上:
從 [IP 位址] 下拉式清單中選擇 FTP 網站的 IP 位址 ,或選擇接受 [所有未指派] 的預設選取專案。
在 [ 埠 ] 方塊中輸入 FTP 網站的 TCP/IP 埠。 根據預設,FTP 月臺和用戶端會使用埠 21。 (注意:若要指定隱含 FTPS,您必須使用埠 990.)
若要使用 FTP 虛擬主機名稱,請選取 [ 啟用虛擬主機名稱] 的方塊,然後在 [ 虛擬主機 ] 方塊中輸入虛擬主機名稱。
針對 SSL 選項,請選擇下列其中一個選項:
- 選取 [無 SSL ] 以停用 SSL 選項。
- 選取 [允許 SSL ] 以允許 FTP 用戶端在與 FTP 伺服器連線時選擇性地使用 FTP over SSL。
- 選取 [要求 SSL ] 以允許 FTP 用戶端在與 FTP 伺服器連線時一律使用 FTP over SSL。
- 如果您選擇 [允許 SSL ] 或 [ 需要 SSL],請從 [ SSL 憑證 ] 下拉式功能表中選擇憑證。
當您完成這些專案之後,請按 [下一步]。
在精靈的下一頁:
- 針對[驗證設定] 選取 [基本]。
- 針對 [授權 設定],從 [ 允許存取] 下拉式清單中選擇 [指定使用者],然後在下拉式功能表下方的方塊中輸入帳戶名稱。
- 針對 [許可權]選項選取[讀取] 和 [寫入]。
- 當您完成這些專案時,請按一下 [ 完成]。
組態
月臺特定 <ftpServer>
元素是在層級設定 <site>
。
屬性
屬性 | 描述 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
allowUTF8 |
選擇性 Boolean 屬性。 如果已啟用 UTF8,則為true;否則為false。 預設值是 true 。 |
||||||||||||
serverAutoStart |
選擇性 Boolean 屬性。 如果 IIS 應該在 FTP 服務啟動時自動啟動 FTP 月臺,則為true;否則為false。 預設值是 true 。 |
||||||||||||
state |
動態產生的唯讀列舉屬性。 指定 FTP 月臺的目前執行時間狀態。 可能的值包括:
None . |
||||||||||||
lastStartupStatus |
動態產生的唯讀 uint 屬性。 指定上次啟動 FTP 月臺時的狀態。 沒有預設值,而且屬性無法設定。 |
子元素
元素 | 描述 |
---|---|
connections |
選擇性項目。 指定 FTP 月臺的連線特定設定。 |
security |
選擇性項目。 指定 FTP 月臺的安全性相關設定。 |
customFeatures |
選擇性項目。 指定使用 FTP 擴充性開發的自訂 FTP 提供者集合。 |
messages |
選擇性項目。 指定 FTP 月臺會顯示給 FTP 用戶端的連線相關訊息。 |
fileHandling |
選擇性項目。 指定 FTP 網站的檔案處理設定。 |
firewallSupport |
選擇性項目。 指定透過防火牆進行之 FTP 連線所需的 FTP 月臺設定。 |
userIsolation |
選擇性項目。 指定 FTP 連線的主目錄查閱行為。 例如,使用者可以限制為其登入名稱為基礎的主目錄。 |
directoryBrowse |
選擇性項目。 指定 FTP 網站的目錄清單選項。 這些設定會影響 FTP 服務向 FTP 用戶端顯示目錄清單的方式。 |
logfile |
選擇性項目。 指定 FTP 月臺的記錄選項。 |
sessions |
動態產生的唯讀專案。 包含目前連接的 FTP 會話集合。 每個會話都包含各種中繼資料,例如用戶端的 IP 位址、目前執行的命令等等。 |
方法
方法 | 描述 |
---|---|
Start |
啟動 FTP 月臺。 |
Stop |
停止 FTP 月臺。 |
FlushLog |
排清 FTP 月臺的記錄檔。 |
組態範例
下列範例說明 FTP 月臺元素 <ftpServer>
中的數個組態設定。 更具體來說, <site>
此範例中的設定會示範如何:
- 建立 FTP 月臺,並在埠 21 上新增 FTP 通訊協定的系結。
- 設定 FTP SSL 選項,以使用憑證在控制項和資料通道上允許安全存取。
- 停用匿名驗證,並啟用 FTP 的基本驗證。
- 拒絕 FTP SYST 命令的存取。
- 指定 UNIX 目錄清單格式。
- 設定記錄選項。
- 指定自訂的歡迎訊息,並啟用本機詳細錯誤訊息。
- 指定使用者會以其登入名稱為基礎的主目錄中啟動,但只有在該目錄存在時才開始。
<site name="ftp.example.com" id="5">
<application path="/">
<virtualDirectory path="/" physicalPath="c:\inetpub\www.example.com" />
</application>
<bindings>
<binding protocol="ftp" bindingInformation="*:21:" />
</bindings>
<ftpServer>
<security>
<ssl controlChannelPolicy="SslAllow"
dataChannelPolicy="SslAllow"
serverCertHash="57686f6120447564652c2049495320526f636b73" />
<authentication>
<basicAuthentication enabled="true" />
<anonymousAuthentication enabled="false" />
</authentication>
<commandFiltering maxCommandLine="4096" allowUnlisted="true">
<add command="SYST" allowed="false" />
</commandFiltering>
</security>
<directoryBrowse showFlags="StyleUnix" />
<logFile logExtFileFlags="Date, Time, ClientIP, UserName, ServerIP, Method, UriStem, FtpStatus, Win32Status, ServerPort, FtpSubStatus, Session, FullPath, Info" />
<messages expandVariables="true"
greetingMessage="Welcome %UserName%!"
allowLocalDetailedErrors="true" />
<userIsolation mode="StartInUsersDirectory" />
</ftpServer>
</site>
下列範例說明 FTP 月臺元素 <system.ftpServer>
中的數個安全性相關組態設定。 更具體來說, <location>
此範例中的設定會示範如何:
- 為系統管理員群組指定讀取和寫入權限的 FTP 授權規則。
- 指定拒絕 *.exe、*.bat和 *.cmd 檔案的 FTP 要求篩選選項。
- 指定最大內容長度為 10000000 個位元組的 FTP 要求限制,以及 URL 長度上限為 1024 個位元組。
- 封鎖對_vti_bin虛擬目錄的 FTP 存取,此目錄會與 FrontPage 伺服器延伸模組搭配使用。
- 指定 FTP IP 篩選選項,允許從 127.0.0.1 存取,並拒絕從 169.254.0.0/255.255.0.0 範圍存取 IP 位址。
<location path="ftp.example.com">
<system.ftpServer>
<security>
<authorization>
<add accessType="Allow" roles="administrators" permissions="Read, Write" />
</authorization>
<requestFiltering>
<fileExtensions allowUnlisted="true">
<add fileExtension=".exe" allowed="false" />
<add fileExtension=".bat" allowed="false" />
<add fileExtension=".cmd" allowed="false" />
</fileExtensions>
<requestLimits maxAllowedContentLength="1000000" maxUrl="1024" />
<hiddenSegments>
<add segment="_vti_bin" />
</hiddenSegments>
</requestFiltering>
<ipSecurity enableReverseDns="false" allowUnlisted="true">
<add ipAddress="127.0.0.1" allowed="true" />
<add ipAddress="169.254.0.0" subnetMask="255.255.0.0" allowed="false" />
</ipSecurity>
</security>
</system.ftpServer>
</location>
範例程式碼
下列範例會將 FTP 月臺設定為使用 UNIX 樣式進行目錄清單,並以位元組顯示可用的目錄存放器。
AppCmd.exe
appcmd.exe set config -section:system.applicationHost/sites /[name='ftp.example.com'].ftpServer.directoryBrowse.showFlags:"StyleUnix, DisplayAvailableBytes" /commit:apphost
注意
當您使用AppCmd.exe設定這些設定時,請務必將 認可 參數 apphost
設定為 。 這會將組態設定認可至ApplicationHost.config檔案中適當的位置區段。
C#
using System;
using System.Text;
using Microsoft.Web.Administration;
internal static class Sample
{
private static void Main()
{
using (ServerManager serverManager = new ServerManager())
{
Configuration config = serverManager.GetApplicationHostConfiguration();
ConfigurationSection sitesSection = config.GetSection("system.applicationHost/sites");
ConfigurationElementCollection sitesCollection = sitesSection.GetCollection();
ConfigurationElement siteElement = FindElement(sitesCollection, "site", "name", @"ftp.example.com");
if (siteElement == null) throw new InvalidOperationException("Element not found!");
ConfigurationElement ftpServerElement = siteElement.GetChildElement("ftpServer");
ConfigurationElement directoryBrowseElement = ftpServerElement.GetChildElement("directoryBrowse");
directoryBrowseElement["showFlags"] = @"StyleUnix, DisplayAvailableBytes";
serverManager.CommitChanges();
}
}
private static ConfigurationElement FindElement(ConfigurationElementCollection collection, string elementTagName, params string[] keyValues)
{
foreach (ConfigurationElement element in collection)
{
if (String.Equals(element.ElementTagName, elementTagName, StringComparison.OrdinalIgnoreCase))
{
bool matches = true;
for (int i = 0; i < keyValues.Length; i += 2)
{
object o = element.GetAttributeValue(keyValues[i]);
string value = null;
if (o != null)
{
value = o.ToString();
}
if (!String.Equals(value, keyValues[i + 1], StringComparison.OrdinalIgnoreCase))
{
matches = false;
break;
}
}
if (matches)
{
return element;
}
}
}
return null;
}
}
VB.NET
Imports System
Imports System.Text
Imports Microsoft.Web.Administration
Module Sample
Sub Main()
Dim serverManager As ServerManager = New ServerManager
Dim config As Configuration = serverManager.GetApplicationHostConfiguration
Dim sitesSection As ConfigurationSection = config.GetSection("system.applicationHost/sites")
Dim sitesCollection As ConfigurationElementCollection = sitesSection.GetCollection
Dim siteElement As ConfigurationElement = FindElement(sitesCollection, "site", "name", "ftp.example.com")
If (siteElement Is Nothing) Then
Throw New InvalidOperationException("Element not found!")
End If
Dim ftpServerElement As ConfigurationElement = siteElement.GetChildElement("ftpServer")
Dim directoryBrowseElement As ConfigurationElement = ftpServerElement.GetChildElement("directoryBrowse")
directoryBrowseElement("showFlags") = "StyleUnix, DisplayAvailableBytes"
serverManager.CommitChanges()
End Sub
Private Function FindElement(ByVal collection As ConfigurationElementCollection, ByVal elementTagName As String, ByVal ParamArray keyValues() As String) As ConfigurationElement
For Each element As ConfigurationElement In collection
If String.Equals(element.ElementTagName, elementTagName, StringComparison.OrdinalIgnoreCase) Then
Dim matches As Boolean = True
Dim i As Integer
For i = 0 To keyValues.Length - 1 Step 2
Dim o As Object = element.GetAttributeValue(keyValues(i))
Dim value As String = Nothing
If (Not (o) Is Nothing) Then
value = o.ToString
End If
If Not String.Equals(value, keyValues((i + 1)), StringComparison.OrdinalIgnoreCase) Then
matches = False
Exit For
End If
Next
If matches Then
Return element
End If
End If
Next
Return Nothing
End Function
End Module
JavaScript
var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";
var sitesSection = adminManager.GetAdminSection("system.applicationHost/sites", "MACHINE/WEBROOT/APPHOST");
var sitesCollection = sitesSection.Collection;
var siteElementPos = FindElement(sitesCollection, "site", ["name", "ftp.example.com"]);
if (siteElementPos == -1) throw "Element not found!";
var siteElement = sitesCollection.Item(siteElementPos);
var ftpServerElement = siteElement.ChildElements.Item("ftpServer");
var directoryBrowseElement = ftpServerElement.ChildElements.Item("directoryBrowse");
directoryBrowseElement.Properties.Item("showFlags").Value = "StyleUnix, DisplayAvailableBytes";
adminManager.CommitChanges();
function FindElement(collection, elementTagName, valuesToMatch) {
for (var i = 0; i < collection.Count; i++) {
var element = collection.Item(i);
if (element.Name == elementTagName) {
var matches = true;
for (var iVal = 0; iVal < valuesToMatch.length; iVal += 2) {
var property = element.GetPropertyByName(valuesToMatch[iVal]);
var value = property.Value;
if (value != null) {
value = value.toString();
}
if (value != valuesToMatch[iVal + 1]) {
matches = false;
break;
}
}
if (matches) {
return i;
}
}
}
return -1;
}
VBScript
Set adminManager = createObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"
Set sitesSection = adminManager.GetAdminSection("system.applicationHost/sites", "MACHINE/WEBROOT/APPHOST")
Set sitesCollection = sitesSection.Collection
siteElementPos = FindElement(sitesCollection, "site", Array("name", "ftp.example.com"))
If siteElementPos = -1 Then
WScript.Echo "Element not found!"
WScript.Quit
End If
Set siteElement = sitesCollection.Item(siteElementPos)
Set ftpServerElement = siteElement.ChildElements.Item("ftpServer")
Set directoryBrowseElement = ftpServerElement.ChildElements.Item("directoryBrowse")
directoryBrowseElement.Properties.Item("showFlags").Value = "StyleUnix, DisplayAvailableBytes"
adminManager.CommitChanges()
Function FindElement(collection, elementTagName, valuesToMatch)
For i = 0 To CInt(collection.Count) - 1
Set element = collection.Item(i)
If element.Name = elementTagName Then
matches = True
For iVal = 0 To UBound(valuesToMatch) Step 2
Set property = element.GetPropertyByName(valuesToMatch(iVal))
value = property.Value
If Not IsNull(value) Then
value = CStr(value)
End If
If Not value = CStr(valuesToMatch(iVal + 1)) Then
matches = False
Exit For
End If
Next
If matches Then
Exit For
End If
End If
Next
If matches Then
FindElement = i
Else
FindElement = -1
End If
End Function