2016-11-10 130 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 }