Powershell根据功能结果设置变量

时间:2013-02-22 14:32:27

标签: 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语句的结果,该函数将确定并返回正确的if语句。从那里我将在我的其余代码中使用相同的全局变量。我创建的一个示例将在另一个函数中使用相同的var $ UrlToUse,在本例中为nameTest。

我不明白为什么这不起作用。我来自Perl背景,可能会混淆PowerShell中的工作原理。任何提示指针等都会非常感激。

非常感谢!

1 个答案:

答案 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