4

目前,我可以使用 adsutil.vbs 为 IIS6 上的主网站设置 mime 类型,语法如下:

cscript adsutil.vbs set W3SVC/1/Root/MimeMap ".manifest, text/cache-manifest"

当我只需要定位 W3SVC/1 时,这似乎工作正常。

我需要编写一个更新脚本,以确保给定 IIS6 安装上的任何站点都配置了正确的 mime 类型。我可以将 mime 类型添加到每个单独的站点或全局级别。我需要以编程方式执行此操作,并且希望尽可能使用 adsutil.vbs。

4

2 回答 2

0

您可以使用 ADSI 和 powershell 2.0。

$adsiPrefix = "IIS://$serverName"
$iisPath = "W3SVC"
$iisADSI = [ADSI]"$adsiPrefix/$iisPath"

$site = $iisADSI.Create("IISWebServer", $script:webSiteNumber)

$xapMimeType = New-Object -comObject MimeMap
    SetCOMProperty $xapMimeType "Extension" ".xap"
    SetCOMProperty $xapMimeType "MimeType" "application/x-silverlight-app"
    $site.Properties["MimeMap"].Add($xapMimeType)

    $site.SetInfo()
    $site.CommitChanges()

function SetCOMProperty($target, $member, $value) {
    $target.psbase.GetType().InvokeMember($member, [System.Reflection.BindingFlags]::SetProperty, $null, $target, $value)        
}
于 2012-02-17T04:11:19.127 回答
0

我认为更简单的方法是只修改每台服务器上的 mime 类型,您只需执行一次更改即可级联到每个网站,但您为什么要尝试重写 .vbs mime 类型?您最好创建一个自定义的。

或者您可以在 IIS 的元数据库中设置更改,您只需在每台服务器上将启用直接元数据库编辑设置为 true,然后通过代码进行更改。

于 2010-01-14T17:34:45.277 回答