2017-09-28 3 views
0

Je vais créer une applet de commande qui accepte IStorageContext comme paramètre. Mais lors de l'exécution de la cmdlet, il renvoie une exception TypeNotFound indiquant:Passer IStorageContext en tant que paramètre d'une applet de commande - Impossible de trouver le type [IStorageContext]

Impossible de trouver le type [IStorageContext]

Voici le Cmdlet:

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

En fait, je l'ai créé un compte de stockage en utilisant New-AzureRmStorageAccount et je veux passer la valeur de sa propriété Context à ma méthode et dans ma méthode, en utilisant New-AzureStorageContainer je veux créer un conteneur. Voici la documentation Context paramètre:

-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 

J'ai trouvé-que le nom complet de IStorageContext est:

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

Mais même avec l'utilisation ci-dessus le nom de type comme paramètre J'ai reçu la même erreur.

Répondre

0

Au lieu de [IStorageContext] vous pouvez utiliser des types suivants:

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

Ainsi, la méthode serait:

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

Import-Module Azure.Storage devrait charger tous liés types à Connectez-vous avec le module dans la session Powershell actuelle.

Dans un script spécifique, vous devez utiliser #Requires -Modules Azure.Storage pour charger le module sans appel explicite Import-Module.

Si vous avez besoin d'un type spécifique d'une bibliothèque spécifique, utilisez la cmdlet Add-Type. Si le kit de développement Azure est installé dans l'emplacement par défaut, chargez le type suivant:

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

Merci Alex. Le code que j'ai partagé peut être simplement utilisé pour reproduire le problème. Avez-vous testé vos solutions proposées? –

+0

Quelle version du module 'Azure.Storage' utilisez-vous? –