PowerShell,从其他PS脚本调用函数并返回一个Object

时间:2010-11-16 16:01:52

标签: powershell object pipeline

如何从其他PowerShell脚本调用函数并返回对象?

主脚本:

# Run function script
. C:\MySystem\Functions.ps1

RunIE

$ie.Navigate("http://www.stackoverflow.com")  
# The Object $ie is not existing

功能脚本:

function RunIE($ie) 
{
$ie = New-Object -ComObject InternetExplorer.Application
}

2 个答案:

答案 0 :(得分:5)

只需从函数中“输出”对象:

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

或更具惯用力

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

然后将输出分配给主脚本中的变量:

$ie = RunIE

答案 1 :(得分:2)

Keith提供 答案,这是您问题的最佳解决方案。无论如何,我想补充一些东西让答案更完整。

如果您的功能定义如下:

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

然后它只是在函数RunIE的范围内创建新变量并在其中分配一些东西。函数完成后,将丢弃$ie变量。

在某些情况下(我将它用于某种类型的调试),您可能需要在当前范围内执行函数,这称为“点源”。只需尝试Google,您就会看到。

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

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