2

如何从其他 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
}
4

2 回答 2

5

只需从函数中“输出”对象,如下所示:

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

或更惯用的说法

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

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

$ie = RunIE
于 2010-11-16T16:55:34.807 回答
2

基思提供答案是您问题的最佳解决方案。无论如何,我想添加一些内容以使答案更完整。

如果你的函数是这样定义的:

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

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

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

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

PS> $a = 11
PS> . getvars
PS> $a, $b
10
b
于 2010-11-17T09:21:10.093 回答