2016-03-02 75 views
0

我有下面的Runbook脚本,它应该将应用程序设置从一个Web应用程序复制到另一个,但是当我运行它时出现错误。Azure Runbook GetMember Error

# 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 

回答

0

您必须安装AzureRm.Websites。该模块的cmdlet丢失。检查您是否已将其安装在您的系统上,如果没有安装它。

+0

我不确定你的意思是什么,因为这是一个runbook脚本,我是否仍然需要安装该cmdlet,或者它没有包含在那里? – Xerxes

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自动化中的任何怪癖。

相关问题