Получить список приложений COM + - PullRequest
0 голосов
/ 26 октября 2018

Я создаю отчет для настроек приложения COM +. Мой первый шаг - прочитать все приложения.

На моем локальном компьютере это не проблема, я делаю это так:

$comAdmin = New-Object -com ("COMAdmin.COMAdminCatalog.1")

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

$applications.Populate() 

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

Это работает очень хорошо! Но мне нужно получить информацию с удаленного сервера. Я пытался сделать это так:

$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».

Я также пытался объединить команды следующим образом:

 $command1 = {
   New-Object -Com "ComAdmin.ComAdminCatalog" |
   .GetCollection("Applications")
}


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

Здесь я получаю следующую ошибку:

Термин .GetCollection не распознается как имя командлета, функция, файл сценария или работоспособная программа. Проверьте правильность написания имя или, если путь был включен, убедитесь, что путь правильный и попробуйте еще раз.

Что мне не хватает ??

1 Ответ

0 голосов
/ 26 октября 2018

Передайте серверы на Invoke-Command, запустите полную команду в -scriptblock

@("chvmes01","chvmes02") | Invoke-Command -ComputerName $_ -ScriptBlock {
    $comAdmin = New-Object -com ("COMAdmin.COMAdminCatalog.1")
    $applications = $comAdmin.GetCollection("Applications")    
    $applications.Populate()    
    $applications | %{
        write-host $_.Name
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...