Сценарий Powershell продолжает просить меня использовать Select-AzureSubscription, хотя я назвал это

У меня есть модуль Runbook Azure, в котором я пытаюсь освободить виртуальные машины. Когда я запускаю runbook, я получаю сообщение об ошибке

Stop-AzureVM : No default subscription has been designated. Use Select-AzureSubscription -Default <subscriptionName> to 
set the default subscription.

Я использовал ниже в моем script.

Add-AzureRmAccount
Select-AzureRMSubscription

После вызова select он распечатывает

PSComputerName        : localhost
PSSourceJobInstanceId : 
Account               : 
Environment           : 
Subscription          : 
Tenant                :

с правильной информацией о подписке и арендаторе, поэтому кажется, что выбор работает правильно, но по какой-то причине я все еще не могу использовать командлет Stop-AzureVM.

Есть идеи?


person new_programmer_22    schedule 29.12.2020    source источник
comment
Какой тип вашей виртуальной машины Azure? Классический или менеджер ресурсов? Дополнительные сведения см. на странице docs.microsoft.com/en-us/azure/azure-resource-manager/.   -  person Jim Xu    schedule 30.12.2020
comment
Ссылка, которую вы дали, битая. как бы я сказал, является ли виртуальная машина диспетчером ресурсов. Я считаю, что это классика, но не уверен на 100 процентов   -  person new_programmer_22    schedule 30.12.2020


Ответы (2)


Команда Stop-AzureVM — это команда PowerShell для управления службами Azure. Его просто можно использовать для остановки классической виртуальной машины Azure. Но команда Add-AzureRmAccount — это команда PowerShell управления ресурсами Azure. После запуска команды мы можем просто управлять ресурсами Azure Resource Management. Дополнительные сведения см. на здесь. и здесь .

Поэтому с виртуальной машиной Azure ARM используйте команду Stop-AzureRmVM, чтобы остановить его. Между тем, чтобы узнать, как остановить классическую виртуальную машину Azure, выполните следующие действия.

  1. Создайте классический запуск Azure Как аккаунт

  2. Скрипт

$ConnectionAssetName = "AzureClassicRunAsConnection"
# Get the connection
$Conn = Get-AutomationConnection -Name $ConnectionAssetName

# Authenticate to Azure with certificate
$CertificateAssetName = $Conn.CertificateAssetName
$AzureCert = Get-AutomationCertificate -Name $CertificateAssetName
Set-AzureSubscription -SubscriptionName $Conn.SubscriptionName -SubscriptionId $Conn.SubscriptionID -Certificate $AzureCert 
Select-AzureSubscription -SubscriptionId $Conn.SubscriptionID

#stop VM
Stop-AzureVM -ServiceName "ContosoService01" -Name "MyVM" -Force

Кроме того, о том, как проверить, является ли виртуальная машина классической, см. -resources-are-using-arm-or-classic-api-#:%7E:text=%20easy%20way%20to%20check%20использует%20%20ARM%20API." rel="nofollow noreferrer">блог

person Jim Xu    schedule 31.12.2020
comment
Такая маленькая ошибка. Изменил командлет на Stop-AzureRmVM, и все заработало. Спасибо! - person new_programmer_22; 31.12.2020

Попробуйте запустить следующее:

Get-Module AzureRm.Profile -ListAvailable

Эта проблема может возникнуть при наличии нескольких экземпляров модуля. Если имеется несколько экземпляров, удалите старые модули и сохраните новый модуль.

Чтобы удалить старый модуль: Uninstall-Module -Name AzureRm.Profile -RequiredVersion 4.6.0#(olderversion if you have any)

person Satya V    schedule 30.12.2020
comment
Похоже, у меня есть только один экземпляр модуля. Это не самая новая версия, но это сделано специально. Любые другие идеи? - person new_programmer_22; 30.12.2020