0

新しい Resource Manager を使用していくつかの Azure VM を作成しましたが、それらを毎日停止したいと考えています。

そのために、クラシック VM と ARM VM の両方を停止する Runbook を公開し、Runbook を毎晩実行するスケジューラを作成しました。

workflow Stop-AzureVMs 
{ 
    $cred = Get-AutomationPSCredential -Name 'Cred'
    Add-AzureAccount -Credential $cred
    Select-AzureSubscription -Current 'SubscriptionName'

    Get-AzureVM | Stop-AzureVM –Force
    Get-AzureRmVM | Stop-AzureRmVM -Force
}

AzureResourceManager モジュールを Azure Automation アカウントにインポートしました。

Azure 自動化モジュール

しかし、私はこのエラーが発生しています:

Exception
At line:34 char:2
 + Get-AzureRMVM | Stop-AzureRMVM -Force
 + ~~~~~~~~~~~~~ Cannot find the 'Get-AzureRMVM' command. If this command is defined as a workflow, ensure it is defined before the workflow that calls it. If it is a command intended to run directly within Windows PowerShell (or is not available on this system), place it in an InlineScript: 'InlineScript { Get-AzureRMVM }'

そんなことがあるものか ?

編集:以下は解決策です

    $cred = Get-AutomationPSCredential -Name 'Cred'

    Add-AzureRmAccount -Credential $cred
    Select-AzureRmSubscription -Name 'SubscriptionName' -SubscipritionId 'SubscriptionId' 

    Get-AzureRmVM | Stop-AzureRmVM -Force

私が見つけたすべてのワークフローは、標準の Add-AzureAccount と Select-AzureSubscription の代わりに、Add-AzureRmAccount と Select-AzureRmSubcription の使用について言及していませんでした。Azure アカウントへの認証プロセスは同じだと思いました。

更新 : 同じ Runbook 内で ASM と ARM コマンドレットの両方を組み合わせることができるようになりました。Azure Automation で既定でサポートされている ARMの詳細については、この投稿を参照してください。

4

7 に答える 7

1

古いバージョンの ARM コマンドレット ( Azure PS 1.0より前) を Azure Automationにインポートしたようです。改名前でした*-AzureRm*。したがって、 tt はすべきではありStop-AzureVMませんStop-AzureRmVM

ただし、これにより、Azure Service Management または Azure Resource Manager コマンドレットのどちらを呼び出そうとしているかが曖昧になります。これがまさに、Azure PS 1.0 でコマンドレット名が変更された理由です。こちらのガイダンスに従うことをお勧めします。

于 2015-10-26T20:22:05.147 に答える
0

新しい Azure RM VM の場合、次のコマンドでアクセス拡張機能を使用します。

Set-AzureRmVMAccessExtension -ResourceGroupName "ResourceGroupName" -VMName "VMName" -Username "Admin User Name" -Password "Admin Password" -Name "Extension Name"

-Nameパラメータは任意の拡張子名であることに注意してください。

于 2016-02-06T05:13:43.730 に答える
0

私の理解によると、ASMモードはデフォルトです。ARMコマンドを使用する場合は、最初に次を使用してモードを切り替える必要がありますSwitch-AzureMode

もう1つの混乱は、Get-AzureRMVMコマンドの目的です。私はグーグルで検索しましたが、何も見つかりませんでした -

ここに画像の説明を入力

于 2015-10-25T19:12:10.437 に答える
0

これはパーティーに遅れているかもしれませんが、次のリンクを確認することをお勧めします。

https://www.attosol.com/start-or-stop-all-vms-of-a-resource-group-in-azure/

基本的に、スクリプトを作成し、スイッチを使用していくつかのエイリアスを記述して、作業を非常に簡単にすることができます。

于 2017-07-10T03:21:46.117 に答える
0

Get-AzureRMVM コマンドレットは AzureRM.Compute モジュールにあります... AzureRM* コマンドレットはまだプレビュー段階であり、Azure Automation ではまだ利用できないと思います。

上記のスクリーンショットの 2 つのモジュールは、コマンドレットの 0.9.x バージョンに対応している可能性が高く、実際には、Switch-AzureMode の背後に 2 つの異なるモジュール (Azure=ASM と AzureResourceManager=ARM) がありました。Switch-AzureMode は、1 つをアンロードし、もう 1 つをロードするだけです。

Automation がまだ 0.9.x バージョンのコマンドレットを使用している場合は、AzureResourceManager モジュールを使用して、ARM VM に Get-AzureVM を使用するだけでよいはずです。

于 2015-10-26T16:05:10.930 に答える