二级包容

时间:2011-10-31 13:54:10

标签: powershell powershell-v2.0

我有一个包含其他脚本的函数:

function include-function($fileName)
{   
    .$fileName
}

我将此功能存储在另一个脚本中

从我的主脚本开始,我想首先包含这个脚本,然后再包含另一个脚本:

."c:\1.ps1"                          #include first file
include-function "c:\2.ps1"          #call function to include other functions
xtest "bbb"                          #function from 2.ps1 that should be included

问题是来自2.ps1的函数xtest在主脚本中不可见,它只在include-function的范围内可见。有没有办法将xtest传递给主脚本?

我的include函数没有真正加载文件(它从API获取它作为字符串),所以我不能直接从主脚本调用它。作为一种解决方法,我刚刚更改了include-function以返回文件内容,然后从主脚本中调用Invoke-Expression(include-function“c:\ 2.ps1”)

由于

1 个答案:

答案 0 :(得分:3)

解释是你的变量和函数的范围,如果在2.ps1中,你将你的变量和函数声明为全局变量,它们将在全局范围内可见。

2.ps1的例子:

$global:Var2="Coucou"

function global:Test2 ([string]$Param)
{
  write-host $Param $Param
}

使用test.ps1

function include-function($fileName)
{   
    .$fileName
}

Clear-Host

include-function "c:\silogix\2.ps1" 

Test2 "Hello"

给出:

Hello Hello

当您在PowerShell V2.0中标记问题时,您最好查看模块。使用模块将以最佳结构化编程结束,请参阅about_Modules