Powershell: как создать виртуальный каталог / веб-приложение IIS 6 в подпапке - PullRequest
4 голосов
/ 03 июня 2011

Я пытаюсь создать веб-приложение / VirtualDirectory в определенной подпапке веб-сайта IIS 6, используя Powershell, как показано ниже:

Структура веб-сайта IIS <<< >>> Структура физического каталога

Test (website) ---------------->   c:\InetPub
    SubDirectory ------------------>   ..\Subdirectory
       gadgets (Web App) -----------------> ..\Gadgets

Сценарий

$WebSiteName = “Test”
$virtualDirName = “subdirectory\gadgets”
$appPoolName = “DefaultAppPool”
$VirtalDirHomePath = "c:\InetPub\Subdirectory\Gadgets"

$iisWebSite = Get-WmiObject "IISWebServerSetting" `
                 -Namespace "root\MicrosoftIISv2"     `
                 -filter "ServerComment like '%$WebSiteName%'"
$virtualDirSettings = [wmiclass] "root\MicrosoftIISv2:IIsWebVirtualDirSetting"
$newVDir = $virtualDirSettings.CreateInstance()
$newVDir.Name = ($iisWebSite.Name + '/ROOT/' + $virtualDirName)
$newVDir.Path = $VirtalDirHomePath
$newVDir.Put();

$nvdir = $iisWebSite.Name + '/ROOT/' + $virtualDirName

$nvdir = $nvdir.Replace("\", "/") 

$v = Get-WmiObject -Class IIsWebVirtualDir -Namespace root\microsoftiisv2 `
                       -filter "Name='$nvdir'"

#Create WebAppliction
$v.AppCreate3(2, $appPoolName, 1)      

Если я укажу $virtualDirName с разделителем пути косой черты (subdirectory/gadgets), $newVDir.Put() вызов вызовет следующее исключение

Исключение, вызывающее "Put" с "0" аргумент (ы): "Win32: система не может найти указанный путь.

Если я изменю $virtualDirName с разделителем пути обратной косой черты (подкаталог \ гаджеты) $newVDir.Put() вызов успешно завершится.

Я не уверен, что это правильный путь.

Есть ли лучший способ создать веб-приложение / VirtualDirectory в определенной подпапке и как я могу перечислить VirtualDirectory / WebApplication, созданный в подпапке.

Ответы [ 2 ]

4 голосов
/ 13 февраля 2012

Альтернативное решение для создания виртуального каталога в IIS 6.0 с помощью сценариев , которое не включает PowerShell, заключается в использовании сценария iisvdir.vbs :

SET webSiteName=Test
SET virtualDirName=subdirectory/gadgets
SET virtualDirHomePath=C:\InetPub\Subdirectory\Gadgets

cscript %SystemRoot%\system32\iisvdir.vbs /create %webSiteName% %virtualDirName% %virtualDirHomePath%

Обратите внимание, что путь к виртуальному каталогу в virtualDirName указывается с помощью прямой косой черты .

Вы также можете перечислить виртуальные каталоги по определенному пути , используя тот же сценарий iisvdir.vbs :

cscript %SystemRoot%\system32\iisvdir.vbs /query %webSiteName%/%virtualDirName%
3 голосов
/ 07 февраля 2012

Дайте это попробовать.Он подключается к корню веб-сайта 1 (веб-сайт по умолчанию).Создает объект IIsWebDirectory для папки гаджетов и назначает ему пул приложений.

$root = [adsi] "IIS://localhost/W3SVC/1/ROOT"
$vDir = $root.Create("IIsWebDirectory", "SubDirectory\Gadgets")
$vDir.AppCreate3(2, "DefaultAppPool", $false)
$vDir.AppFriendlyName = "Andy Test"
$vDir.SetInfo()

Если вам необходимо подключиться к веб-сайту, отличному от веб-сайта по умолчанию, вы можете получить идентификатор веб-сайта с помощью этой команды:

([adsi] "IIS://localhost/W3SVC").psbase.Children | ? {$_.psbase.schemaclassname -eq "IIsWebServer" } | select Path, ServerComment

Выход:

Path                         ServerComment
----                         -------------
IIS://localhost/W3SVC/1      {Default Web Site}
IIS://localhost/W3SVC/2      {WHS site}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...