将IStorageContext作为Cmdlet的参数传递 - 无法找到类型[IStorageContext]

时间:2017-09-28 10:24:15

标签: powershell azure azure-storage azure-powershell cmdlet

我要创建一个接受Function SomeCmdlet { param( [parameter(Mandatory=$true)] [IStorageContext]$storageContext ) New-AzureStorageContainer -Name "ContainerName" -Context $storageContext -Permission Off } 作为参数的Cmdlet。但是在运行cmdlet时,它会引发Context异常,说明:

  

无法找到类型[IStorageContext]

这是Cmdlet:

Context

事实上,我已使用New-AzureRmStorageAccount创建了一个存储帐户,我希望将-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 属性的值传递给我的方法和我的方法,使用New-AzureStorageContainer i想要创建一个容器。以下是Microsoft.Azure.Commands.Common.Authentication.Abstractions.IStorageContext参数的文档:

{{1}}

我发现IStorageContext的全名是:

  • {{1}}

但即使使用上面的类型名称作为参数类型我也收到了同样的错误。

2 个答案:

答案 0 :(得分: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
}

答案 1 :(得分: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"