6

関連するドキュメントを探しているだけです。例は必要ありませんが、感謝します。

何百もの仮想ディレクトリを手動で作成しなければならない状況があり、これを自動化することで、プロセスをより効率的にすることができます。

おそらく来年には、サーバー環境を作り直して、URL の書き換えなど、より適切な処理を行えるようにすることができます (残念ながら、これは Web アプリケーションの現在のサイクルでは実現可能ではないようです)。くだらないコードを継承するのは素晴らしいことではありませんか?

~ ウィリアム・ライリー・ランド

4

4 に答える 4

6

vbscriptでも簡単に行えます。

' This code creates a virtual directory in the default Web Site
' ---------------------------------------------------------------
' From the book "Windows Server Cookbook" by Robbie Allen
' ISBN: 0-596-00633-0
' ---------------------------------------------------------------

' ------ SCRIPT CONFIGURATION ------
strComputer = "rallen-w2k3"
strVdirName = "<VdirName>"  'e.g. employees
strVdirPath = "<Path>"      'e.g. D:\resumes
' ------ END CONFIGURATION ---------
set objIIS = GetObject("IIS://" & strComputer & "/W3SVC/1")
set objWebSite = objIIS.GetObject("IISWebVirtualDir","Root")
set objVdir = objWebSite.Create("IISWebVirtualDir",strVdirName)
objVdir.AccessRead = True
objVdir.Path = strVdirPath
objVdir.SetInfo
WScript.Echo "Successfully created virtual directory: " & objVdir.Name
于 2008-11-05T18:02:30.163 に答える
4

明らかに、PowerShellスクリプトを介してこれを行うこともできます。

$objIIS = new-object System.DirectoryServices.DirectoryEntry("IIS://localhost/W3SVC/1/Root")
$children = $objIIS.psbase.children
$vDir = $children.add("NewFolder",$objIIS.psbase.SchemaClassName)
$vDir.psbase.CommitChanges()
$vDir.Path = "C:\Documents and Settings\blah\Desktop\new"
$vDir.defaultdoc = "Default.htm"
$vDir.psbase.CommitChanges()

ドキュメントは次のとおりです。MSDN-IISプログラム管理の使用

于 2008-11-05T18:03:43.140 に答える
2

テストされていません(古いコードベースからのもので、私の元請負業者によって書かれました)

using System;
using System.Collections.Generic;
using System.Text;
using System.DirectoryServices;
using System.IO;

namespace Common.DirectoryServices
{
    public class IISManager
    {

        private string _webSiteID;

        public string WebSiteID
        {
            get { return _webSiteID; }
            set { _webSiteID = value; }
        }

        private string _strServerName;
        public string ServerName
        {
            get
            {
                return _strServerName;
            }
            set
            {
                _strServerName = value;
            }
        }

        private string _strVDirName;
        public string VDirName
        {
            get
            {
                return _strVDirName;
            }
            set
            {
                _strVDirName = value;
            }
        }

        private string _strPhysicalPath;
        public string PhysicalPath
        {
            get
            {
                return _strPhysicalPath;
            }
            set
            {
                _strPhysicalPath = value;
            }
        }

        private VDirectoryType _directoryType;
        public VDirectoryType DirectoryType
        {
            get
            {
                return _directoryType;
            }
            set
            {
                _directoryType = value;
            }
        }

        public enum VDirectoryType
        {
            FTP_DIR, WEB_IIS_DIR
        };

        public string CreateVDir()
        {
            System.DirectoryServices.DirectoryEntry oDE;
            System.DirectoryServices.DirectoryEntries oDC;
            System.DirectoryServices.DirectoryEntry oVirDir;
            //try
           // {
                //check whether to create FTP or Web IIS Virtual Directory
                if (this.DirectoryType == VDirectoryType.WEB_IIS_DIR)
                {
                    oDE = new DirectoryEntry("IIS://" +
                          this._strServerName + "/W3SVC/" + _webSiteID + "/Root");
                }
                else
                {
                    oDE = new DirectoryEntry("IIS://" +
                          this._strServerName + "/MSFTPSVC/1/Root");
                }

                //Get Default Web Site
                oDC = oDE.Children;

                //Add row
                oVirDir = oDC.Add(this._strVDirName,
                          oDE.SchemaClassName.ToString());

                //Commit changes for Schema class File
                oVirDir.CommitChanges();

                //Create physical path if it does not exists
                if (!Directory.Exists(this._strPhysicalPath))
                {
                    Directory.CreateDirectory(this._strPhysicalPath);
                }

                //Set virtual directory to physical path
                oVirDir.Properties["Path"].Value = this._strPhysicalPath;

                //Set read access
                oVirDir.Properties["AccessRead"][0] = true;

                //Create Application for IIS Application (as for ASP.NET)
                if (this.DirectoryType == VDirectoryType.WEB_IIS_DIR)
                {
                    oVirDir.Invoke("AppCreate", true);
                    oVirDir.Properties["AppFriendlyName"][0] = this._strVDirName;
                }

                //Save all the changes
                oVirDir.CommitChanges();

                return null;

           // }
            //catch (Exception exc)
            //{
             //   return exc.Message.ToString();
            //}
        }
    }
}
于 2008-11-05T17:59:15.567 に答える
1

WIX インストーラー ツールは、これを管理する方法を作成します。インストール ビルド手順の一部として定義します。すべてのプロジェクトを構成するには多少の作業が必要ですが、その後のメンテナンスは簡単です... 仮想ディレクトリ エントリの作成に関するチュートリアルからの抜粋を次に示します...

6.3 ウェブディレクトリ

WiX ツールセットには、IIS での Web ディレクトリの作成など、インストーラーが追加のタスクを実行できるようにする追加のライブラリがあります。これらの拡張機能を使用するには、適切な WiX ライブラリにリンクするだけです。リンカーは、必要なヘルパー DLL をインストール パッケージに自動的に含めます。

まず、Web サイトに属するファイルを使用して Web サイトを作成する必要があります。

<Directory Id='TARGETDIR' Name='SourceDir'>
  <Directory Id='ProgramFilesFolder' Name='PFiles'>
    <Directory Id='InstallDir' Name='Acme'>
      <Component Id='default.phpComponent' Guid= 'YOURGUID-5314-4689-83CA-9DB5C04D5742'>
        <File Id='default.htmFile' Name='default.htm' LongName='default.htm' KeyPath='yes' DiskId='1' Source='default. htm' />
      </コンポーネント>
    </ディレクトリ>
  </ディレクトリ>

次の手順では、仮想ディレクトリを作成します。

      <Component Id='TestWebVirtualDirComponent' Guid='YOURGUID-6304-410E-A808-E3585379EADB'>
        <WebVirtualDir Id='TestWebVirtualDir' Alias='Test' Directory='InstallDir' WebSite='DefaultWebSite'>
          <WebApplication Id='TestWebApplication ' Name='Test' />
        </WebVirtualDir>
      </Component>
    </Directory>

最後に、Web サイトを参照するエントリを作成します。

  <WebSite Id='DefaultWebSite' Description='Default Web Site'>
   <WebAddress Id='AllUnassigned' Port='80' />
  </WebSite>

于 2008-11-05T18:43:19.753 に答える