按计划在Azure中启用/禁用可用性测试

按计划在Azure中启用/禁用可用性测试,azure,azure-runbook,Azure,Azure Runbook,我想知道是否有一种简单的方法可以在Azure中运行定时自动化命令 我成功地为两个应用程序中的可用性测试编写了Enable/Disable命令 Azure CLI: az resource update --set properties.enabled=true --name 'someName' --resource-type 'Microsoft.Insights/webtests' --resource-group 'soemResourceGroup' 及 Powershell: #Ge

我想知道是否有一种简单的方法可以在Azure中运行定时自动化命令

我成功地为两个应用程序中的可用性测试编写了Enable/Disable命令

Azure CLI:

az resource update --set properties.enabled=true --name 'someName' --resource-type 'Microsoft.Insights/webtests' --resource-group 'soemResourceGroup'

Powershell:

#Get All webTests
$resourceGroupnames = "someGroupName1", "someGroupName2";
$enableTests = "True";

ForEach ($resourceGroupname in $resourceGroupnames) { 
    $resourceGroupname
    $allAvailabilityTestsIds = Get-AzureRmResource -ResourceGroupName $resourceGroupname `
    | Where-Object -Property ResourceType -EQ "microsoft.insights/webtests" `
    | Select-Object -ExpandProperty ResourceId;

    ForEach ($availabilityTestId in $allAvailabilityTestsIds) { 
        $availabilityTest = Get-AzureRmResource -ResourceId $availabilityTestId;
        $availabilityTest.Properties.Enabled = $enableTests;
        $availabilityTest | Set-AzureRmResource -Force;
    }
}
问题是,我不确定是否能在Comamnd线之外按计划运行它们。我曾读到,我可以使用Automation帐户来使用powershell脚本,但这似乎是一场噩梦,因为我在身份验证方面遇到了很多问题(不知道为什么)

这是唯一的办法吗

编辑: 我发布了我在下面看到的错误

Set-AzureRmResource : Cannot validate argument on parameter 'Sku'. The argument is null or empty. Provide an argument 
that is not null or empty, and then try the command again.
At line:37 char:29
+         $availabilityTest | Set-AzureRmResource -Force;
+                             ~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidData: (Microsoft.Azure...dels.PSResource:PSObject) [Set-AzureRmResource], 
ParameterBindingValidationException
    + FullyQualifiedErrorId : 
ParameterArgumentValidationError,Microsoft.Azure.Commands.ResourceManager.Cmdlets.Implementation.SetAzureResourceCmdlet

Set-AzureRmResource : Cannot validate argument on parameter 'Sku'. The argument is null or empty. Provide an argument 
that is not null or empty, and then try the command again.
At line:37 char:29
+         $availabilityTest | Set-AzureRmResource -Force;
+                             ~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidData: (Microsoft.Azure...dels.PSResource:PSObject) [Set-AzureRmResource], 
ParameterBindingValidationException
    + FullyQualifiedErrorId : 
ParameterArgumentValidationError,Microsoft.Azure.Commands.ResourceManager.Cmdlets.Implementation.SetAzureResourceCmdlet

Set-AzureRmResource : Cannot validate argument on parameter 'Sku'. The argument is null or empty. Provide an argument 
that is not null or empty, and then try the command again.
At line:37 char:29
+         $availabilityTest | Set-AzureRmResource -Force;
+                             ~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidData: (Microsoft.Azure...dels.PSResource:PSObject) [Set-AzureRmResource], 
ParameterBindingValidationException
    + FullyQualifiedErrorId : 
ParameterArgumentValidationError,Microsoft.Azure.Commands.ResourceManager.Cmdlets.Implementation.SetAzureResourceCmdlet

Set-AzureRmResource : Cannot validate argument on parameter 'Sku'. The argument is null or empty. Provide an argument 
that is not null or empty, and then try the command again.
At line:37 char:29
+         $availabilityTest | Set-AzureRmResource -Force;
+                             ~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidData: (Microsoft.Azure...dels.PSResource:PSObject) [Set-AzureRmResource], 
ParameterBindingValidationException
    + FullyQualifiedErrorId : 
ParameterArgumentValidationError,Microsoft.Azure.Commands.ResourceManager.Cmdlets.Implementation.SetAzureResourceCmdlet

Set-AzureRmResource : Cannot validate argument on parameter 'Sku'. The argument is null or empty. Provide an argument 
that is not null or empty, and then try the command again.
At line:37 char:29
+         $availabilityTest | Set-AzureRmResource -Force;
+                             ~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidData: (Microsoft.Azure...dels.PSResource:PSObject) [Set-AzureRmResource], 
ParameterBindingValidationException
    + FullyQualifiedErrorId : 
ParameterArgumentValidationError,Microsoft.Azure.Commands.ResourceManager.Cmdlets.Implementation.SetAzureResourceCmdlet

Set-AzureRmResource : Cannot validate argument on parameter 'Sku'. The argument is null or empty. Provide an argument 
that is not null or empty, and then try the command again.
At line:37 char:29
+         $availabilityTest | Set-AzureRmResource -Force;
+                             ~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidData: (Microsoft.Azure...dels.PSResource:PSObject) [Set-AzureRmResource], 
ParameterBindingValidationException
    + FullyQualifiedErrorId : 
ParameterArgumentValidationError,Microsoft.Azure.Commands.ResourceManager.Cmdlets.Implementation.SetAzureResourceCmdlet

Set-AzureRmResource : Cannot validate argument on parameter 'Sku'. The argument is null or empty. Provide an argument 
that is not null or empty, and then try the command again.
At line:37 char:29
+         $availabilityTest | Set-AzureRmResource -Force;
+                             ~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidData: (Microsoft.Azure...dels.PSResource:PSObject) [Set-AzureRmResource], 
ParameterBindingValidationException
    + FullyQualifiedErrorId : 
ParameterArgumentValidationError,Microsoft.Azure.Commands.ResourceManager.Cmdlets.Implementation.SetAzureResourceCmdlet

注意。

您可以按照以下步骤使用自动化中的azure runbook来完成此操作

1.导航到您的自动化帐户->
runbook
->
创建runbook
->创建
Powershell
runbook

2.在runbook中,将脚本添加到login,您的完整脚本如下所示。(在运行runbook之前,请确保已将
AzureRM.Resources
AzureRM.Profile
powershell模块导入您的自动化帐户->
模块
,如果未导入,请在
模块
>
浏览库
中搜索并导入模块。)


3.成功运行脚本后,按照此链接将计划添加到您的runbook。

您可以按照以下步骤在自动化中使用azure runbook来完成此操作

1.导航到您的自动化帐户->
runbook
->
创建runbook
->创建
Powershell
runbook

2.在runbook中,将脚本添加到login,您的完整脚本如下所示。(在运行runbook之前,请确保已将
AzureRM.Resources
AzureRM.Profile
powershell模块导入您的自动化帐户->
模块
,如果未导入,请在
模块
>
浏览库
中搜索并导入模块。)


3.成功运行脚本后,按照此链接将计划添加到您的runbook。

@JoyWang hello我在帖子中发布了错误消息。正如我前面提到的,这在使用Azure命令行时起作用。只有在使用runbook时才会引发此错误。感谢您的关注和帮助:)您是否使用最新版本导入了
AzureRM.Resources
模块?如果没有,请尝试取消对其的导入,并使用最新版本再次导入。问题在于模块版本控制!非常感谢你的帮助。不过我还是觉得安排时间应该很简单。我不知道他们为什么在Azure中如此艰难。@JoyWang你好,我在帖子中发布了错误消息。正如我前面提到的,这在使用Azure命令行时起作用。只有在使用runbook时才会引发此错误。感谢您的关注和帮助:)您是否使用最新版本导入了
AzureRM.Resources
模块?如果没有,请尝试取消对其的导入,并使用最新版本再次导入。问题在于模块版本控制!非常感谢你的帮助。不过我还是觉得安排时间应该很简单。我不知道为什么他们在蔚蓝中如此艰难。
$connectionName = "AzureRunAsConnection"
try
{
    # Get the connection "AzureRunAsConnection "
    $servicePrincipalConnection=Get-AutomationConnection -Name $connectionName         

    "Logging in to Azure..."
    Add-AzureRmAccount `
        -ServicePrincipal `
        -TenantId $servicePrincipalConnection.TenantId `
        -ApplicationId $servicePrincipalConnection.ApplicationId `
        -CertificateThumbprint $servicePrincipalConnection.CertificateThumbprint 
}
catch {
    if (!$servicePrincipalConnection)
    {
        $ErrorMessage = "Connection $connectionName not found."
        throw $ErrorMessage
    } else{
        Write-Error -Message $_.Exception
        throw $_.Exception
    }
}

#Get All webTests
$resourceGroupnames = "someGroupName1", "someGroupName2";
$enableTests = "True";

ForEach ($resourceGroupname in $resourceGroupnames) { 
    $resourceGroupname
    $allAvailabilityTestsIds = Get-AzureRmResource -ResourceGroupName $resourceGroupname `
    | Where-Object -Property ResourceType -EQ "microsoft.insights/webtests" `
    | Select-Object -ExpandProperty ResourceId;

    ForEach ($availabilityTestId in $allAvailabilityTestsIds) { 
        $availabilityTest = Get-AzureRmResource -ResourceId $availabilityTestId;
        $availabilityTest.Properties.Enabled = $enableTests;
        $availabilityTest | Set-AzureRmResource -Force;
    }
}