Powershell

嘗試在 PowerShell 中設置 COM+ 應用程序組件屬性

  • February 15, 2013

我有這個腳本,我試圖在組件服務中為 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 但沒有成功)

任何幫助將不勝感激!

我發現了問題

上面程式碼中標記為 #– EDIT 的註釋下方的行包含以下內容:

$components.SaveChanges()

這是保存對組件所做的更改所必需的。

另外值得注意的是,在組件服務中,您需要刷新組件視圖才能看到您的更改。

http://support.microsoft.com/default.aspx?scid=kb;EN-US;287422展示了一個值得一看的 vbscript 實現。它做了一些奇怪的事情,比如反向循環——我不知道這是否必要。無論如何 - 看起來將值設置為 1 應該可以工作。

引用自:https://serverfault.com/questions/479152