尝试在 PowerShell 中设置 COM+ 应用程序组件属性

尝试在 PowerShell 中设置 COM+ 应用程序组件属性

我有这个脚本,我正在尝试为组件服务中 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 应该可以工作。

相关内容