【问题标题】:Powershell to set TransactionIsolation level of COM Plus componentsPowershell 设置 COM Plus 组件的 TransactionIsolation 级别
【发布时间】:2013-05-07 09:49:32
【问题描述】:

如何通过 powershell 脚本将 COM PLUS 组件的事务隔离级别设置为任何。 我正在尝试使用以下代码

  $comAdmin = New-Object -comobject COMAdmin.COMAdminCatalog
    $apps = $comAdmin.GetCollection(“Applications”)
    $apps.Populate();

    foreach($app in $apps)
    {
    Write-Host $app.Name
        if($app.Name -eq $ApplicationName)
        {
         $components = $apps.GetCollection("Components",$app.key)
         $components.Populate()


             foreach ($component in $components)
             {
                $componentName = $component.Name;                
                Write-Host "*"$componentName;   
                if($componentName -eq "WDA_DUP.Generic13")
                {
                $component.Value("TXIsolationLevel")=COMAdminTxIsolationLevelAny;
                }                  
             } 
        }   
    }

但没有解决目的。请帮助我:) `

【问题讨论】:

  • 您是否尝试将 COMAdminTxIsolationLevelAny 替换为 0? (其底层枚举值:msdn.microsoft.com/library/windows/desktop/ms681736.aspx
  • 是的,我试过了,但最终出现以下错误:异常设置“值”:“参数不正确。(来自 HRESULT 的异常:0x80070057 (E_INVALIDARG))”
  • 一开始你的脚本好像错了,你需要输入$component.Value("TXIsolationLevel")=0(不带;)
  • 嗨西蒙,非常感谢您的回复,我删除了分号,现在错误消失了。但是当我看到新的事务隔离级别时,组件服务控制台中没有反映组件。我如何检查它是否真的设置为 0。
  • 您需要以某种方式调用 SaveChanges:stackoverflow.com/questions/6508874/powershell-com-settings

标签: powershell com powershell-2.0


【解决方案1】:

工作脚本:

$ApplicationID = "{C0D4E2A4-CAC1-47BA-819C-EAB73E978FDF}"
$comAdmin = New-Object -comobject COMAdmin.COMAdminCatalog
$apps = $comAdmin.GetCollection(“Applications”)
$apps.Populate();

foreach($app in $apps)
{
  #Write-Host $app.Name
  #Write-Host $app.Key
  if($app.Key -eq $ApplicationID)
  {
      Write-Host $app.Name
      $components = $apps.GetCollection("Components",$app.key)
      $components.Populate()
      foreach ($component in $components)
      {
        $componentName = $component.Name;                
        Write-Host "Set "$componentName;   
        $component.Value("TxIsolationLevel")=2
      } 
      $components.SaveChanges()
  }   
}

【讨论】:

  • 考虑添加您的答案的详细信息,以便 OP 可以了解错误是什么
猜你喜欢
  • 2011-09-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-20
相关资源
最近更新 更多