2016-03-02 67 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自動化中的任何怪癖。

相關問題