2014-02-25 54 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