Azure / Powershell:检查SQL Server是否存在

时间:2016-11-10 21:39:33

标签: sql-server powershell azure

我来自C#背景,这是我第一次涉足Powershell。我正在尝试编写一个Powershell脚本,在Azure中执行大量的工作,其中包括:

  • 检查SQL Server实例是否存在
    • 创建服务器(使用New-AzureRmSqlServer),如果不是
  • 在服务器上创建新数据库
  • ......和其他一些东西

我的第一个问题是如果服务器已经存在,我不需要创建它;我可以直接进入数据库创建。但是,我似乎无法做到这一点。

我尝试了Get-AzureRmSqlServer,但如果找不到我正在寻找的服务器,则会出错。最后,我使用此函数返回$true如果找到,$false如果不是:

function Check-For-Server
{
    Param(
        [Parameter(Mandatory=$true)]
        [String]
        $ServerName
    )

    if (Test-AzureName -Name $ServerName)
    {
        return $false
    }
    else
    {
        return $true
    }
}

问题在于:我收到以下错误:

  

Test-AzureName:无法使用指定的命名参数解析参数集   在C:\ src \ Powershell \ test.ps1:10 char:9
  + if(Test-AzureName -Name $ ServerName)
  + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   + CategoryInfo:InvalidArgument:(:) [Test-AzureName],ParameterBindingException
  + FullyQualifiedErrorId:AmbiguousParameterSet,Microsoft.WindowsAzure.Commands.CloudService.TestAzureNameCommand

有谁知道怎么解决这个问题?谷歌绝对没有任何帮助,至少就这个特定的错误消息Test-AzureName而言。我想过尝试其中一个-Service/ServiceBusName/Storage/Website参数,但我不确定哪个甚至适用于此。或者如果它甚至是相关的 - 错误消息似乎并不表示我实际上缺少参数,只是我提供的那个有点不好。

哦,如果有帮助,请致电Check-For-Server

$sqlServerName = "test_db_server"
Check-For-Server -ServerName $sqlServerName

谢谢!

1 个答案:

答案 0 :(得分:5)

$serverInstance = Get-AzureRmSqlServer -ServerName $serverName -ResourceGroupName $resourceGroupname -ErrorAction SilentlyContinue
if ($serverInstance) { do stuff }
else { do other stuff }