在 Azure 门户中看不到资源组
Cannot see Resource group in Azure portal
剧透:我是 Azure 和 Azure Powershell 的新手。
我开始学习 Azure 和 Azure Powershell,我目前的自学练习是编写脚本,检查 Azure 中是否存在特定资源组。如果此特定资源组不存在,则创建一个。所以我开始写这个脚本:
# Exit on error
$ErrorActionPreference = "Stop"
# Import module for Azure Rm
Import-Module AzureRM
# Connect with Azure
Connect-AzureRmAccount
# Define name of Resource group we want to create
$ResourceGroupTest = "ResourceGroupForStorageAccount"
# Check if ResourceGroup exists
Get-AzureRmResourceGroup -Name $ResourceGroupTest -ErrorVariable $NotPresent -ErrorAction SilentlyContinue
Write-Host "Start to check if Resource group '$($ResourceGroupTest)' exists..."
if ($NotPresent) {
Write-Host "Resource group with name '$($ResourceGroupTest)' does not exist."
# Create resource group
New-AzureRmResourceGroup -Name $ResourceGroupTest -Location "West Europe" -Verbose
} else {
Write-Host "Found Resource group with name '$($ResourceGroupTest)'."
}
现在,当我 运行 这个脚本时,我得到这样的输出:
Start to check if Resource group 'ResourceGroupForStorageAccount' exists...
Found Resource group with name 'ResourceGroupForStorageAccount'.
Account SubscriptionName Tenant ...
------- ---------------- -------- ...
my.email@host.com Some subscription ...
但是我在 Azure RM 门户的资源组列表中找不到名称为 ResourceGroupForStorageAccount 的这个新创建的资源组。
我的问题在哪里?
-ErrorVariable
的值不正确,请使用 NotPresent
而不是参数 -ErrorVariable
的 $NotPresent
。如果您使用 -ErrorVariable $NotPresent
,则 $NotPresent
始终是 null/false,因此创建资源命令永远不会执行。
示例代码如下:
#your other code here.
# Check if ResourceGroup exists
Get-AzureRmResourceGroup -Name $ResourceGroupTest -ErrorVariable NotPresent -ErrorAction SilentlyContinue
Write-Host "Start to check if Resource group '$($ResourceGroupTest)' exists..."
if ($NotPresent) {
Write-Host "Resource group with name '$($ResourceGroupTest)' does not exist."
# Create resource group
New-AzureRmResourceGroup -Name $ResourceGroupTest -Location "West Europe" -Verbose
} else {
Write-Host "Found Resource group with name '$($ResourceGroupTest)'."
}
只是为了添加到现有答案中,发生这种情况是因为 powershell 扩展了表达式中的变量 -ErrorVariable $NotPresent
。并且因为您的变量不存在,所以它变为:-ErrorVariable
。所以它不会创建一个名为 not present 的变量,并且您的 if()
语句不会像您期望的那样工作。
剧透:我是 Azure 和 Azure Powershell 的新手。
我开始学习 Azure 和 Azure Powershell,我目前的自学练习是编写脚本,检查 Azure 中是否存在特定资源组。如果此特定资源组不存在,则创建一个。所以我开始写这个脚本:
# Exit on error
$ErrorActionPreference = "Stop"
# Import module for Azure Rm
Import-Module AzureRM
# Connect with Azure
Connect-AzureRmAccount
# Define name of Resource group we want to create
$ResourceGroupTest = "ResourceGroupForStorageAccount"
# Check if ResourceGroup exists
Get-AzureRmResourceGroup -Name $ResourceGroupTest -ErrorVariable $NotPresent -ErrorAction SilentlyContinue
Write-Host "Start to check if Resource group '$($ResourceGroupTest)' exists..."
if ($NotPresent) {
Write-Host "Resource group with name '$($ResourceGroupTest)' does not exist."
# Create resource group
New-AzureRmResourceGroup -Name $ResourceGroupTest -Location "West Europe" -Verbose
} else {
Write-Host "Found Resource group with name '$($ResourceGroupTest)'."
}
现在,当我 运行 这个脚本时,我得到这样的输出:
Start to check if Resource group 'ResourceGroupForStorageAccount' exists...
Found Resource group with name 'ResourceGroupForStorageAccount'.
Account SubscriptionName Tenant ...
------- ---------------- -------- ...
my.email@host.com Some subscription ...
但是我在 Azure RM 门户的资源组列表中找不到名称为 ResourceGroupForStorageAccount 的这个新创建的资源组。
我的问题在哪里?
-ErrorVariable
的值不正确,请使用 NotPresent
而不是参数 -ErrorVariable
的 $NotPresent
。如果您使用 -ErrorVariable $NotPresent
,则 $NotPresent
始终是 null/false,因此创建资源命令永远不会执行。
示例代码如下:
#your other code here.
# Check if ResourceGroup exists
Get-AzureRmResourceGroup -Name $ResourceGroupTest -ErrorVariable NotPresent -ErrorAction SilentlyContinue
Write-Host "Start to check if Resource group '$($ResourceGroupTest)' exists..."
if ($NotPresent) {
Write-Host "Resource group with name '$($ResourceGroupTest)' does not exist."
# Create resource group
New-AzureRmResourceGroup -Name $ResourceGroupTest -Location "West Europe" -Verbose
} else {
Write-Host "Found Resource group with name '$($ResourceGroupTest)'."
}
只是为了添加到现有答案中,发生这种情况是因为 powershell 扩展了表达式中的变量 -ErrorVariable $NotPresent
。并且因为您的变量不存在,所以它变为:-ErrorVariable
。所以它不会创建一个名为 not present 的变量,并且您的 if()
语句不会像您期望的那样工作。