源函数调用不允许我调用函数,为什么会这样呢?

时间:2019-07-16 19:46:47

标签: function powershell

我正在尝试编写一个模块,该模块调用包含我在其他模块中使用的一系列功能的脚本。我过去曾成功完成此操作,但似乎陷入了一种奇怪的情况,这是我的情况: 当我直接将功能代码复制到脚本中并在本地调用它时,它可以正常工作。 但是当我

. <exact path to my function>

调用加载我的函数,然后我尝试在文件中调用一个函数时,它会加载正确的BUT,但会引发错误,指出该函数不存在,但正如我之前所说,当我将该函数复制到脚本中时,它执行得很好

我的功能叫做NetworkScan

我试图将函数转换为模块并使用import-module,最终结果完全相同 我还尝试将功能脚本放置在与模块相同的位置,然后将脚本的位置设置为$ PSScriptRoot,然后使用。 ./function.ps1也调用相同的问题(这是我目前所在的位置)

Set-Location $PSScriptRoot

$ScannedIPs=@()  
$RPIip= @()  

$SIP = "192.168.220.1"  
$EIP = "192.168.220.254"  

#load function script   
. .\function.ps1  

$ScannedIPs = NetworkScan -SIP $SIP -EIP $EIP  
....

这是在function.ps1中定义网络扫描功能的方式:

 function NetworkScan{  
 Param(  
 [Parameter(Position = 0, Mandatory = $true, ValueFromPipeline = $true,   ValueFromPipelineByPropertyName = $true)]  
 [Alias("SIP")]  
 $StartScanIP,  
 [Alias("EIP")]  
 $EndScanIP)  
....  
}  

预期结果: 我的函数被调用以拾取网络上的IP及其MAC地址,然后将其返回到模块脚本以继续处理

实际结果:

NetworkScan : The term 'NetworkScan' is not recognized as the name of a cmdlet, function, script file, or operable
program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At C:\Users\User\Downloads\Script_in_Dev\xxx_PowerCycler_10min.ps1:109 char:15
+ $ScannedIPs = NetworkScan -SIP $SIP -EIP $EIP
+               ~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (NetworkScan:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

编辑: 我注释掉了我的function.ps1文件中的所有其他功能,现在除了NetworkScan,我似乎可以通过上述方法使用NetworkScan,但是我想修复我的function.ps1文件,以便可以使用其中的所有项目。文件。有谁知道为什么会发生这种情况,因为我可以加载文件但不使用任何此功能?由于我没有遇到语法错误,因此如果能够将正确的方向指向我,我将很难理解我哪里出了问题。

0 个答案:

没有答案