验证COM和x2B;使用PowerShell的包状态

验证COM和x2B;使用PowerShell的包状态,powershell,com+,Powershell,Com+,我已使用PowerShell编写了远程服务器上COM+应用程序的启动和停止脚本: function Set-ComPlusStatus { $comPlusApps=Get-Content $comPlusAppList $comObj=New-Object -comobject COMAdmin.COMAdminCatalog $comObj.Connect($server) ForEach($comPlusApp in $comPlusApps) {

我已使用PowerShell编写了远程服务器上COM+应用程序的启动和停止脚本:

function Set-ComPlusStatus {
    $comPlusApps=Get-Content $comPlusAppList
    $comObj=New-Object -comobject COMAdmin.COMAdminCatalog
    $comObj.Connect($server)
    ForEach($comPlusApp in $comPlusApps) {
        if($setStatus="stop") {
            $comObj.ShutdownApplication($comPlusApp)
        }
        elseif($setStatus="start") {
            $comObj.StartApplication($comPlusApp)
        }
    }
}
此功能正常工作,即按预期停止/启动参考txt文档($comPlusAppList)中列出的COM+包

然而,我想添加一些形式的验证/确认,以确认该功能已成功;理想情况下,我希望检查特定包的状态,并根据状态将成功/失败消息写回主机


如何访问COM+程序包状态(已停止/正在运行)来完成此操作?

我只能提供一个提示性的答案。我一直想弄明白,但还没弄明白。此链接应提供您所需的内容,尽管我还不知道如何枚举应用程序的PropertyInfo集合。

以下脚本有效:

Invoke-Command -ComputerName $compname -ScriptBlock{ $Catalog = New-   Object -com COMAdmin.COMAdminCatalog 
$oapplications = $catalog.getcollection("Applications") 
$oapplications.populate()
foreach ($oapplication in $oapplications){ 
$skeyappli = $oapplication.key 
$oappliInstances = $oapplications.getcollection("ApplicationInstances",$skeyappli) 
$oappliInstances.populate() 
# To verify if application is started 
If ($oappliInstances.count -eq 0) { 
    Write-Host "Application"$oapplication.value("Name")"is stopped" -ForegroundColor Red 
    } Else{ 
        Write-Host "Application"$oapplication.value("Name")"is Running" -ForegroundColor Green 
  }
 }
}