2017-09-28 1 views
0

Ich werde ein Cmdlet erstellen, das als Parameter akzeptiert. Aber wenn das Cmdlet ausgeführt wird, wirft er eine TypeNotFound Ausnahme besagt:IStorageContext als Parameter eines Cmdlet übergeben - Typ kann nicht gefunden werden [IStorageContext]

Unable Typ [IStorageContext]

Hier ist die Cmdlets zu finden:

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

In der Tat, ich habe Ich habe ein Speicherkonto mit New-AzureRmStorageAccount erstellt und möchte den Wert seiner Eigenschaft Context an meine Methode übergeben, und in meiner Methode New-AzureStorageContainer möchte ich einen Container erstellen. Hier ist die Dokumentation für Context Parameter:

-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 

fand ich-hin, dass der vollständige Name IStorageContext ist:

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

Aber auch bei der Verwendung von oben Typnamen als Parametertyp Ich habe denselben Fehler erhalten.

Antwort

0

Statt [IStorageContext] können Sie entweder von folgenden Typen verwenden:

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

So ist die Methode wäre:

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

Import-Module Azure.Storage alle damit verbundenen laden sollte Arten zu zusammen mit dem Modul in die aktuelle Powershell-Sitzung.

In einem bestimmten Skript sollten Sie #Requires -Modules Azure.Storage verwenden, um das Modul ohne expliziten Aufruf Import-Module geladen zu bekommen. Wenn Sie einen bestimmten Typ aus einer bestimmten Bibliothek benötigen, verwenden Sie Add-Type cmdlet. Vorausgesetzt, dass Sie das Azure SDK auf dem Standardspeicherort installiert haben, laden Sie den folgenden Typ:

+0

Danke Alex. Der Code, den ich geteilt habe, kann einfach verwendet werden, um das Problem zu reproduzieren. Hast du deine Lösungsvorschläge getestet? –

+0

Welche Version von 'Azure.Storage' Modul verwenden Sie? –

Verwandte Themen