首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取COM+应用程序列表

获取COM+应用程序列表
EN

Stack Overflow用户
提问于 2018-10-26 08:11:30
回答 2查看 1.2K关注 0票数 1

我正在为COM+应用程序设置构建一个报告。我的第一步是读取所有的应用程序。

在我的本地计算机上,这不是一个问题,我这样做:

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

$applications = $comAdmin.GetCollection("Applications") 

$applications.Populate() 

foreach ($application in $applications)
{
        write-host $application.Name
}

工作得很好!但我需要从远程服务器获取信息。我试着这样做:

代码语言:javascript
复制
$Server = "chvmes01;chvmes02"
$option = [System.StringSplitOptions]::RemoveEmptyEntries
$ServerArr = $Server.Split(";",$option)

foreach($s in $ServerArr){
        $comAdmin = Invoke-Command -Session $session -Scriptblock {New-Object -Com "ComAdmin.ComAdminCatalog"}

        $applications = Invoke-Command -Session $session -Scriptblock {param($comAdmin) $comAdmin.GetCollection("Applications")} -ArgumentList $comAdmin

        Remove-PSSession $session
}

但这给了我以下错误:

方法调用失败,因为Deserialized.System.__ComObject#{790c6e0b-9194-4cc9-9426-a48a63185696}不包含名为“GetCollection”的方法。

我还尝试将这样的命令组合起来:

代码语言:javascript
复制
 $command1 = {
   New-Object -Com "ComAdmin.ComAdminCatalog" |
   .GetCollection("Applications")
}


$applications = Invoke-Command -Session $session -ScriptBlock $command1

在这里,我得到以下错误:

术语“.GetCollection”不能识别为cmdlet、函数、脚本文件或可操作程序的名称。检查名称的拼写,或者如果包含路径,请验证路径是否正确,然后再试一次。

我遗漏了什么??

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-10-26 14:55:29

将服务器输送到Invoke-Command中,在-scriptblock中运行完整的命令

代码语言:javascript
复制
@("chvmes01","chvmes02") | Invoke-Command -ComputerName $_ -ScriptBlock {
    $comAdmin = New-Object -com ("COMAdmin.COMAdminCatalog.1")
    $applications = $comAdmin.GetCollection("Applications")    
    $applications.Populate()    
    $applications | %{
        write-host $_.Name
    }
}
票数 1
EN

Stack Overflow用户

发布于 2021-07-28 00:36:01

只作评论,以防万一:我需要两个级别,并为此而努力(当然,我可以用脚本来对付其他人)。

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

foreach ($AppObject in $applications) {
    "`nApplication  $($appObject.key)   $($appObject.Name)    ID: $($appObject.Value("Identity"))"
    $Components = $applications.GetCollection("Components", $AppObject.Key) 
    $Components.populate()
    $components | foreach-object {
        "Component    $($_.key)   $($_.Name)" }
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53004282

复制
相关文章

相似问题

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