在Powershell中为变量设置默认值

时间:2016-08-25 21:19:34

标签: powershell

在bash中我可以执行以下操作,如果未设置name,则将UserName设置为默认值:

name=${UserName:-James}

Powershell是否支持这样的事情?

1 个答案:

答案 0 :(得分:2)

使用函数和参数,我们可以做一些我认为你正在做的事情。

一个功能示例:

function WriteUser
{
    param($user = "A User",
    $message = "Message")
    Write-Host $user
    Write-Host $message
}

调用不带参数的函数

WriteUser

会给你输出:

  

用户

     

消息

WriteUser -user"我" -message"错误"

会写下以下内容:

  

     

错误

一些额外的注释,您不必使用参数名称。

WriteUser "Bob" "All Systems Go" would work by the order of the parameters.

您也可以切换命名参数的顺序:

WriteUser -message "Error" -user "user, user"

并且该函数将把参数设置为正确的。

否则,我相信你必须做一些事情来接近三元行为,如:

function Like-Tern
{
    for ($i = 1; $i -lt $args.Count; $i++)
    {
        if ($args[$i] -eq ":")
        {
            $coord = $i
            break
        }
    }

    if ($coord -eq 0) { throw new System.Exception "No operator!" }
    $toReturn
    if ($args[$coord - 1] -eq "")
    {
        $toReturn = $args[$coord + 1]
    }
    else 
    {
        $toReturn = $args[$coord -1]
    }

    return $toReturn
}

Credit for the idea here 功能文件还可以包括:

Set-Alias ~ Like-Tern -Option AllScope

然后你会像使用它一样:

$var = ~ $Value : "Johnny"

当然,~完全是武断的,因为我无法让${工作......