我不确定我在这里做错了什么,但下面的代码返回以下错误消息:
术语“identityTest”未被识别为cmdlet,函数,脚本文件或可操作程序的名称。检查名称的拼写,或者如果包含路径,请验证路径是否正确,然后重试。
这是我的样本/测试代码:
#Bunch of Global vars
$UrlToUse = identityTest
function identityTest
{
$internalMatch = ".*inbound"
$externalMatch = ".*outbound"
$fqdn = "blahblah_inbound"
if ( $fqdn -match $internalMatch )
{
return "http://in3"
Write-Host "Inbound Hit"
}
if ( $fqdn -match $externalMatch )
{
return "http://out"
Write-Host "Outbond Hit"
}
else
{
return "http://default"
write-host "Default Hit"
}
}
function sampleTest
{
write-host "will upload to the following URL: + $UrlToUse
}
Write-Host $UrlToUse
不确定我是否采取了正确的方法,但这正是我想要实现的目标。我计划将UrlToUse设置为全局变量,具体取决于indetityTest函数中if语句的结果,该函数将确定并返回正确的if语句。从那里我将在我的其余代码中使用相同的全局变量。我创建的一个示例将在另一个函数中使用相同的var $ UrlToUse,在本例中为nameTest。
我不明白为什么这不起作用。我来自Perl背景,可能会混淆PowerShell中的工作原理。任何提示指针等都会非常感激。
非常感谢!
答案 0 :(得分:1)
在调用函数identityTest之前移动它。像这样:
function identityTest
{
$internalMatch = ".*inbound"
$externalMatch = ".*outbound"
$fqdn = "blahblah_inbound"
if ( $fqdn -match $internalMatch )
{
return "http://in3"
Write-Host "Inbound Hit"
}
if ( $fqdn -match $externalMatch )
{
return "http://out"
Write-Host "Outbond Hit"
}
else
{
return "http://default"
write-host "Default Hit"
}
}
#Bunch of Global vars
$UrlToUse = identityTest
function sampleTest
{
write-host "will upload to the following URL: + $UrlToUse"
}
Write-Host $UrlToUse