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