0

ある Web アプリから別の Web アプリにアプリケーション設定をコピーすることになっている次の Runbook スクリプトがありますが、実行するとエラーが発生します。

# Get the credential to use for Authentication to Azure and Azure Subscription Name
$cred = Get-AutomationPSCredential -Name 'Credintial'
Login-AzureRmAccount -Credential $cred

$fromResourceGroup = 'parkprod'
$fromSite = 'parkprod'
$toResourceGroup = 'cmsfarhad'
$toSite = 'farhadparkingapi'

$props = (Invoke-AzureRmResourceAction -ResourceGroupName $fromResourceGroup -ResourceType Microsoft.Web/sites/Config -Name $fromSite/appsettings -Action list -ApiVersion 2015-08-01 -Force).Properties

$hash = @{}
$props | Get-Member -MemberType NoteProperty | % { $hash[$_.Name] = $props.($_.Name) }

Set-AzureRMWebApp -ResourceGroupName $toResourceGroup -Name $toSite -AppSettings $hash

エラー:

Environments                                                                                           Context          
------------                                                                                           -------          
{[AzureCloud, AzureCloud], [AzureChinaCloud, AzureChinaCloud], [AzureUSGovernment, AzureUSGovernment]} Microsoft.Azur...
Invoke-AzureRmResourceAction : Object reference not set to an instance of an object.
At line:10 char:11
+ $props = (Invoke-AzureRmResourceAction -ResourceGroupName $fromResour ...
+           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [], NullReferenceException
    + FullyQualifiedErrorId : System.NullReferenceException

Get-Member : The input object cannot be bound to any parameters for the command either because the command does not 
take pipeline input or the input and its properties do not match any of the parameters that take pipeline input.
At line:13 char:10
+ $props | Get-Member -InputObject $f -MemberType NoteProperty | % { $h ...
+          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [Get-Member], ParameterBindingException
    + FullyQualifiedErrorId : InputObjectNotBound,Microsoft.PowerShell.Commands.GetMemberCommand

Get-Member : You must specify an object for the Get-Member cmdlet.
At line:13 char:10
+ $props | Get-Member -InputObject $f -MemberType NoteProperty | % { $h ...
+          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : CloseError: (:) [Get-Member], InvalidOperationException
    + FullyQualifiedErrorId : NoObjectInGetMember,Microsoft.PowerShell.Commands.GetMemberCommand

Set-AzureRMWebApp : The term 'Set-AzureRMWebApp' is not recognized as the name of a cmdlet, function, script file, or 
operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try 
again.
At line:15 char:1
+ Set-AzureRMWebApp -ResourceGroupName $toResourceGroup -Name $toSite - ...
+ ~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (Set-AzureRMWebApp:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException
4

2 に答える 2

0

AzureRm.Websitesをインストールする必要があります。そのモジュールのコマンドレットがありません。システムにインストールされているかどうかを確認し、インストールされていない場合はインストールしてください。

于 2016-03-02T15:04:24.557 に答える
0

Peter が言うように、AzureRM.Websites PowerShell モジュールは現在 Automation サービスに同梱されていないため、このモジュールを自分でインポートする必要があります。詳細については、 https://azure.microsoft.com/en-us/blog/announce-azure-resource-manager-support-azure-automation-runbooks/を参照してください。

しかし、Invoke-AzureRmResourceAction コマンドレットの使用にも問題があるようです。返されるエラーはあまり役に立ちません。また、私はそのコマンドレットにあまり慣れていないため、何が間違っているのかを言うのは難しいです。テストすることの 1 つは、同じコマンドレット呼び出しがローカル PowerShell から機能するかどうかを確認することです。ローカルの PowerShell で機能しない場合、問題はコードにあり、Azure Automation の問題ではありません。

于 2016-03-02T18:38:19.633 に答える