Создание виртуального каталога IIS 6 с PowerShell v2 по WMI/ADSI

Я могу создать IISWebVirtualDir или IISWebVirtualDirSetting с WMI, но я не нашел способа превратить виртуальный каталог в Приложение IIS. Виртуальный каталог хочет AppFriendlyName и Путь. Это легко, потому что они - часть... Установка объекта. Но для превращения виртуального каталога в Приложение, необходимо установить AppIsolated=2 и AppRoot = [его корень].

Я не могу сделать этого с WMI. Я не смешал бы ADSI и WMI, поэтому если бы кто-либо может тренировать меня до того, чтобы заставлять это произойти в WMI, я был бы очень счастлив.

Вот мой демонстрационный код:

$server = 'serverName'
$site = 'W3SVC/10/ROOT/'
$app = 'AppName'
# If I use these args, the VirDir is not created at all. Fails to write read-only prop
# $args = @{'Name'=('W3SVC/10/ROOT/' + $app); `
#    'AppIsolated'=2;'AppRoot'='/LM/' + $site + $app}
# So I use this single arg
$args = @{'Name'=($site + $app)}
$args # Look at the args to make sure I'm putting what I think I am
$v = set-wmiinstance -Class IIsWebVirtualDir -Authentication PacketPrivacy `
    -ComputerName $server -Namespace root\microsoftiisv2 -Arguments $args
$v.Put()
# VirDir now exists

# Pull the settings object for it and prove I can tweak it
$filter = "Name = '" + $site + $app + "'"
$filter
$v = get-wmiobject -Class IIsWebVirtualDirSetting -Authentication PacketPrivacy `
    -ComputerName $server -Namespace root\microsoftiisv2 -Filter $filter
$v.AppFriendlyName = $app
$v.Put()
$v
# Yep. Changes work. Goes without saying I cannot change AppIsolated or AppRoot

# But ADSI can change them without a hitch
# Slower than molasses in January, but it works
$a = [adsi]("IIS://$server/" + $site + $app)
$a.Put("AppIsolated", 2)
$a.Put("AppRoot", ('/LM/' + $site + $app))
$a.Put("Path", "C:\Inetpub\wwwroot\news")
$a.SetInfo()
$a

Какие-либо мысли?

Обновление с рабочим кодом

 $server = 'serverName'
$site = 'W3SVC/11/ROOT/'
$app = 'AppName'
$path = "c:\inetpub\wwwroot\news"

$args = @{'Name'=($site + $app)}
$v = set-wmiinstance -Class IIsWebVirtualDir -Authentication PacketPrivacy 
  -ComputerName $server -Namespace root\microsoftiisv2 -Arguments $args
$v.AppCreate2(2)


$filter = "Name = '" + $site + $app + "'"
$v = get-wmiobject -Class IIsWebVirtualDirSetting -Authentication PacketPrivacy 
 -ComputerName $server -Namespace root\microsoftiisv2 -Filter $filter
$v.AppFriendlyName = $app
$v.Path = $path
$v.Put()

Спасибо Garrett и Glenn.

1
задан codepoke 21 May 2010 в 14:18
поделиться

2 ответа

Это не проверено, но как насчет чего-то вроде этого:

$appCreateParams = $v.PSBase.GetMethodParameters("AppCreate2")
$appCreateParams["AppMode"] = 2

$v.PSBase.InvokeMethod("AppCreate2", $appCreateParams, null)
1
ответ дан 3 September 2019 в 00:28
поделиться

Похоже, вам не хватает команды AppCreate2? http://arcware.net/creating-iis-applications-with-powershell/

1
ответ дан 3 September 2019 в 00:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: