2014-02-25 32 views
0

我想重置所有我正在循环的服务器上的所有com +。这是我迄今为止Powershell重置所有com +

$servers = Get-Content "d:\scripts\servers.txt" 
foreach ($servername in $servers) 
{ 

$comAdmin = New-Object -comobject COMAdmin.COMAdminCatalog 
$comAdmin.Connect($servername) 
$comAdmin.ShutdownApplication(com+ app name goes here) 

}

我想关闭所有COMPLUS组件,而无需指定名称

+0

定义“重置所有com +”。 – mjolinor

+0

您不需要foreach循环,只需将$ servers直接传递给'Invoke-Command' – Nacimota

+0

我想关闭com +组件 – SlopTonio

回答

1

使用COMADMIN:

$sb = { 
    $admin = New-Object -Com ("COMAdmin.COMAdminCatalog") 
    $apps = $admin.GetCollection("Applications") 
    $apps.Populate() 
    $apps | % { 
     $component = $apps.GetCollection("Components", $_.Key) 
     $component.Populate() 
     $component | % { 
      $admin.ShutdownApplication("$_.Name") 
     } 
    } 
} 

$servers | % {Invoke-Command -ComputerName $_ -ScriptBlock $sb} 

更多信息here。我只是编译了所有的逻辑。

+0

在我的脚本中执行此操作并在本周进行测试。我会让你知道它是否有效,如果它有效,将它标记为我的最佳答案。谢谢 – SlopTonio