我有一个包含其他脚本的函数:
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”)
由于
答案 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。