Я создаю отчет для настроек приложения 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 не распознается как имя командлета,
функция, файл сценария или работоспособная программа. Проверьте правильность написания
имя или, если путь был включен, убедитесь, что путь правильный и
попробуйте еще раз.
Что мне не хватает ??