2017-09-28 93 views
0

我將創建一個Cmdlet,它接受IStorageContext作爲參數。但在運行cmdlet時,它拋出一個異常TypeNotFound聲明:將IStorageContext傳遞爲Cmdlet的參數 - 無法找到類型[IStorageContext]

找不到類型[IStorageContext]

下面是該cmdlet:

Function SomeCmdlet { 
    param(
    [parameter(Mandatory=$true)] 
    [IStorageContext]$storageContext 
) 
    New-AzureStorageContainer -Name "ContainerName" -Context $storageContext -Permission Off 
} 

事實上,我已經使用New-AzureRmStorageAccount創建了一個存儲帳戶,我想將其Context屬性的值傳遞給我的方法,並在我的方法中使用New-AzureStorageContainer我想創建一個容器。下面是Context參數文件:

-Context 
Specifies a context for the new container. 

Type:      IStorageContext 
Position:     Named 
Default value:    None 
Accept pipeline input:  True (ByPropertyName, ByValue) 
Accept wildcard characters: False 

我找出的是的IStorageContext全名是:

  • Microsoft.Azure.Commands.Common.Authentication.Abstractions.IStorageContext

但是,即使使用上述類型的名稱作爲參數類型我收到了同樣的錯誤。

回答

0

而不是[IStorageContext]您可以使用以下類型:

  • [Microsoft.WindowsAzure.Commands.Common.Storage.AzureStorageContext]
  • [object]

所以方法是:

Function SomeCmdlet { 
    param(
    [parameter(Mandatory=$true)] 
    [object]$storageContext 
) 
    New-AzureStorageContainer -Name "ContainerName" -Context $storageContext -Permission Off 
} 
0

Import-Module Azure.Storage應該載入所有相關類型與模塊一起進入當前的Powershell會話。

在特定的腳本中,您應該使用#Requires -Modules Azure.Storage來調用加載模塊而不顯式調用Import-Module

如果您需要特定庫中的特定類型,請使用Add-Type cmdlet。假設您已將Azure SDK安裝在默認位置,請使用以下方式加載類型:

Add-Type -LiteralPath "C:\Program Files (x86)\Microsoft SDKs\Azure\PowerShell\Storage\Azure.Storage\Microsoft.Azure.Commands.Common.Authentication.Abstractions.dll" 
+0

感謝Alex。我共享的代碼可以簡單地用於重現問題。你測試了你提出的解決方案嗎? –

+0

您正在使用哪個版本的'Azure.Storage'模塊? –

相關問題