首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有一个简单的Powershell命令来判断COM+应用程序是否暂停?

是否有一个简单的Powershell命令来判断COM+应用程序是否暂停?
EN

Stack Overflow用户
提问于 2017-01-11 08:25:29
回答 2查看 3.8K关注 0票数 2

我想,这段Powershell代码将启动/关闭一个COM+。

代码语言:javascript
复制
$comAdmin= New-Object -com ("COMAdmin.COMAdminCatalog.1")

$comAdmin.ShutdownApplication("pkgAdap2")

 $comAdmin.StartApplication("pkgAdap2")

Powershell不会抱怨。但是,如何查看和查看应用程序是否已关闭/启动?我可以在组件服务窗口中看到它,但不确定如何判断它是否正在运行。

有没有什么简单的方法可以用Powershell来告诉我呢?我发现有一个名为"IsPaused“的COMAdminCatalogObject,它返回true或false。但是,我不知道如何引用它。我找到的所有示例和解决方案都是通过组件服务中的所有应用程序的多行循环。我在想像这样的东西是可行的:

代码语言:javascript
复制
$comAdmin.IsPaused("pkgAdap2")
EN

回答 2

Stack Overflow用户

发布于 2017-01-11 12:02:09

COM列表

代码语言:javascript
复制
$comAdmin = New-Object -com ("COMAdmin.COMAdminCatalog.1")
$applications = $comAdmin.GetCollection("Applications") 
$applications.Populate() 

foreach ($application in $applications)
{

    $components = $applications.GetCollection("Components",$application.key)
    $components.Populate()
    foreach ($component in $components)
    {

        $dllName = $component.Value("DLL")
        $componentName = $component.Name

        "Component Name:$componentName"
        "DllName: $dllName`n"
    }
}

您可以使用以下命令启动或停止:

代码语言:javascript
复制
$comAdmin.StartApplication("appName")
$comAdmin.ShutdownApplication("appName")

对于安装:

请参阅Microsoft Link

代码语言:javascript
复制
$comAdmin.InstallApplication("fileName")

对于关闭所有COM的

代码语言:javascript
复制
$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} 

希望能有所帮助。

票数 2
EN

Stack Overflow用户

发布于 2017-01-11 15:04:00

在这里:

代码语言:javascript
复制
$catalog = New-Object -ComObject "COMAdmin.COMAdminCatalog"

$appCollection = $catalog.GetCollection("Applications")
$appCollection.Populate()
$appList = @{}
$appCollection | ForEach-Object {
  $appList.Add($_.Value("ID"), $_.Name)
}

$appInstances = $catalog.GetCollection("ApplicationInstances")
$appInstances.Populate()
$appInstanceList = @{}
$appInstances | ForEach-Object {
  $appValue = $_.Value("Application")
  $appInstanceList.Add($appValue, $appList[$appValue])
}

$appList.Keys | ForEach-Object {
  New-Object PSObject -Property @{
    "Name"    = $appList[$_]
    "ID"      = $_
    "Running" = $appInstanceList.ContainsKey($_)
  }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41580808

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档