2016-11-10 145 views
0

我来自C#背景,这是我第一次进入Powershell。我试着写,其中一个PowerShell脚本,做了一大堆的东西天青:Azure/Powershell:检查SQL Server是否存在

  • 检查是否一个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 : Parameter set cannot be resolved using the specified named parameters.
At 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 

谢谢!

+0

您为什么不创建ARM模板并使用New-AzureRmResourceGroupDeployment cmdlet部署/重新部署的任何原因? –

+0

那么,这主要是基于“我不知道我在做什么,所以我不知道我能做到这一点”。 :)我会研究它。谢谢! –

回答

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