2013-02-22 28 views
1

PowerShell的设置变量,我不知道下面到底我做错了,但代码返回以下错误信息:从函数的结果

术语“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语句的结果,该语句将确定并返回正确的语句。从那里我将在我的其他代码中使用相同的全局变量。我创建的一个例子会在另一个函数中使用相同的var $ UrlToUse,在这种情况下,名称为sampleTest。

我不明白为什么这不起作用。我来自Perl背景,可能会令人困惑的事情如何在PowerShell中工作。任何提示指针等将真的很感激。

非常感谢!

+0

脚本文件是从上到下读取的。每个对象/脚本/函数/等等。您必须在会话的早期或脚本中初始化您的参考。 – 2013-02-22 14:44:28

回答

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 
+0

谢谢你的工作。没有意识到函数顺序的重要性。 – user1048209 2013-02-22 15:09:54