2013-06-28 2 views
2

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

$foldername = "C:\test" 
$computername ="remotecomputer" 

Invoke-Command -computername $computername -Scriptblock {$newquotaobj = New-Object -ComObject Fsrm.FsrmQuotaManager} 
Invoke-Command -computername $computername -Scriptblock {$newquotasrc = $newquotaobj).GetQuota($Using:foldername)} 

Мое понимание, что $newquotaobj будет десериализации и отправлен обратно - но это, кажется, не бывает. Можно ли даже достичь моей цели здесь - то есть создать объект com удаленно и работать на нем?

ответ

2

Invoke-Command возвращает результат, а не созданные объекты. Если вы хотите удаленно управлять COM-объектов с помощью Invoke-Command вы должны включить код в блок сценария:

$foldername = "C:\test" 
$computername ="remotecomputer" 

Invoke-Command -ComputerName $computername -ScriptBlock { 
    $newquotaobj = New-Object -ComObject Fsrm.FsrmQuotaManager 
    $newquotasrc = $newquotaobj.GetQuota($args[0]) 
    $newquotasrc # <-- this will be returned to the local host 
} -ArgumentList $foldername 
+0

Спасибо вам большое! Все работы в настоящее время, я могу создавать квоты удаленно :) Invoke-Command -session $ S -scriptblock { $ fsrmremote = New-Object -ComObject Fsrm.FsrmQuotaManager $ qcreate = $ fsrmremote.CreateQuota ($ Использование: имя_папки) $ qcreate.Description = $ Использование: qdescription $ qcreate.QuotaLimit = $ Использование: qlimitBytes $ qcreate.Commit() } – Sergei