0

我有以下运行手册脚本,它应该将应用程序设置从一个 Web 应用程序复制到另一个,但是当我运行它时出现错误。

# 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

正如 Peter 所说,AzureRM.Websites PowerShell 模块当前未在自动化服务中提供,因此您需要自己导入此模块。有关详细信息,请参阅https://azure.microsoft.com/en-us/blog/announcing-azure-resource-manager-support-azure-automation-runbooks/ 。

但看起来您在使用 Invoke-AzureRmResourceAction cmdlet 时也存在问题。返回的错误不是很有用,而且我对那个 cmdlet 不是很熟悉,所以我很难说出你做错了什么。要测试的一件事是检查相同的 cmdlet 调用是否在本地 PowerShell 中有效。如果它在本地 PowerShell 中不起作用,则问题出在您的代码上,而不是 Azure 自动化中的任何怪癖。

于 2016-03-02T18:38:19.633 回答
0

您必须安装AzureRm.Websites。缺少该模块的 cmdlet。检查您是否在系统上安装了它,如果没有安装它。

于 2016-03-02T15:04:24.557 回答