2010-11-16 44 views

Répondre

5

juste "sortie" l'objet de la fonction comme ceci:

function RunIE 
{ 
    $ie = New-Object -ComObject InternetExplorer.Application 
    Write-Output $ie 
} 

ou plus idiomatiques

function RunIE 
{ 
    New-Object -ComObject InternetExplorer.Application 
} 

Affectez ensuite la sortie à une variable dans votre script principal:

$ie = RunIE 
+1

Pour compléter la réponse, vous pouvez ajouter '. RunIE' :) – stej

+1

J'ai supposé que '. C: \ MySystem \ Functions.ps1' a déjà fourni la fonction RunIE. Dans ce cas, '$ ie = RunIE' est suffisant. –

+2

Je voulais dire "vous pourriez ajouter aussi noter que" RunIE "est possible.Je parlais de l'exemple original où la fonction ressemblait à la fonction RunIE {$ ie = ..}' – stej

2

Keith fourni la réponse qui est la meilleure solution pour votre problème. Quoi qu'il en soit, j'aimerais ajouter quelque chose pour que la réponse soit plus complète.

Si votre fonction est définie comme ceci:

function getvars 
{ 
    $a = 10 
    $b = "b" 
} 

alors il crée simplement une nouvelle variable dans la portée de la fonction RunIE et attribue quelque chose. Une fois la fonction terminée, la variable $ie est supprimée.

Dans certains cas (je l'utilise pour un certain type de débogage), vous devrez peut-être exécuter la fonction dans la portée actuelle et cela s'appelle `dot sourcing '. Essayez Google et vous verrez.

PS> $a = 11 
PS> getvars 
PS> $a, $b 
11 

PS> $a = 11 
PS> . getvars 
PS> $a, $b 
10 
b