我正在尝试编写一个模块,该模块调用包含我在其他模块中使用的一系列功能的脚本。我过去曾成功完成此操作,但似乎陷入了一种奇怪的情况,这是我的情况: 当我直接将功能代码复制到脚本中并在本地调用它时,它可以正常工作。 但是当我
. <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文件,以便可以使用其中的所有项目。文件。有谁知道为什么会发生这种情况,因为我可以加载文件但不使用任何此功能?由于我没有遇到语法错误,因此如果能够将正确的方向指向我,我将很难理解我哪里出了问题。