我有 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 : 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
有人知道如何解决这个问题吗? Google 绝对没有提供任何帮助,至少就 Test-AzureName
而言,此特定错误消息是这样。我想尝试 -Service/ServiceBusName/Storage/Website
参数之一,但我不确定哪一个在这里适用。或者,即使它是相关的 - 错误消息似乎并不表明我实际上缺少一个参数,只是我提供的参数有些糟糕。
哦,如果有帮助的话,这里是对 Check-For-Server
的调用:
$sqlServerName = "test_db_server"
Check-For-Server -ServerName $sqlServerName
谢谢!
最佳答案
$serverInstance = Get-AzureRmSqlServer -ServerName $serverName -ResourceGroupName $resourceGroupname -ErrorAction SilentlyContinue
if ($serverInstance) { do stuff }
else { do other stuff }
关于sql-server - Azure/Powershell : Checking to see if a SQL Server exists,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40537479/