2013-06-28 5 views
2

Je suis en train de créer un objet et opérer à l'aide Remoting comme ci-dessous:Powershell Remoting - la création d'objets à distance

$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)} 

Je crois comprendre que $newquotaobj serait désérialisée et renvoyé - mais il ne semble pas se produire. Est-il même possible de réaliser mon objectif ici - c'est-à-dire créer un objet com à distance et y opérer?

Répondre

2

Invoke-Command renvoie la sortie, pas les objets créés. Si vous voulez utiliser à distance des objets COM via Invoke-Command vous devez inclure le code dans le bloc de script:

$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

Merci beaucoup! Tout fonctionne maintenant, je peux créer des quotas à distance :) Invoke-Command -session $ s -Scriptblock { $ fsrmremote = New-Object -ComObject Fsrm.FsrmQuotaManager $ qcreate = $ fsrmremote.CreateQuota ($ en utilisant: foldername) $ qcreate.Description = $ Utilisation: qdescription $ qcreate.QuotaLimit = $ Utilisation: qlimitBytes $ qcreate.Commit() } – Sergei

Questions connexes