我有这个脚本,我正在尝试为组件服务中 Com+ 中应用程序的组件设置 IISIntrinsic 属性。
这就是我想要的
这是我的 powershell 脚本:
$comAdmin = New-Object -comobject COMAdmin.COMAdminCatalog
# -- Shut down the running app
$comAdmin.ShutdownApplication("MyAppName")
# -- Loop through components
$applications = $comAdmin.GetCollection("Applications")
$applications.Populate()
foreach ($application in $applications)
{
if ($application.Name -eq "MyAppName")
{
$components = $applications.GetCollection("Components",$application.key)
$components.Populate()
foreach ($component in $components)
{
# -- Set property
$component.Value("IISIntrinsics") = $true
}
#-- EDIT - ADDING THIS LINE SOLVED THE ISSUE
$components.SaveChanges()
}
}
# -- Save and exit
$applications.SaveChanges()
# -- start the application again
$comAdmin.StartApplication("MyAppName")
将 IISIntrinsics 设置为 true 似乎没有任何影响。
我的感觉是
- 任何一个$applications.SaveChanges() 是错误的调用 或者
- 我设置属性的方式不正确(我也尝试将其设置为 1,但没有成功)
任何帮助将不胜感激!
答案1
我发现这个问题
上面代码中标记为 #-- EDIT 的注释下面的行包含以下内容:
$components.SaveChanges()
这是为了保存对组件所做的更改。
还值得注意的是,在组件服务中,您需要刷新组件视图才能看到您的更改。
答案2
http://support.microsoft.com/default.aspx?scid=kb;EN-US;287422显示了值得一看的 vbscript 实现。它做了一些奇怪的事情,比如反向循环 - 我不知道这是否有必要。无论如何 - 看起来将值设置为 1 应该可以工作。