Reputation: 1139
I need to get the URL for all of my Blob in all Storage accounts and all Resource groups.
The command below can be used, but I need to iterate through all objects in all of my current subscription.
# Set variables.
$rgName = "<resource-group>"
$accountName = "<storage-account>"
$containerName = "<container>"
# Get context object.
$storageAccount = Get-AzStorageAccount -ResourceGroupName $rgName -Name $accountName
$ctx = $storageAccount.Context
# Read the container's public access setting.
Get-AzStorageContainerAcl -Context $ctx
Script parameters removed like below:
# Get context object.
$storageAccount = Get-AzStorageAccount
$ctx = $storageAccount.Context
# Read the container's public access setting.
Get-AzStorageContainerAcl -Context $ctx
However, the error is:
Get-AzStorageContainer : Cannot convert 'System.Object[]' to the type 'Microsoft.Azure.Commands.Common.Authentication.Abstractions.IStorageContext' required by parameter 'Context'. Specified method is not supported.
At line:6 char:36
+ Get-AzStorageContainerAcl -Context $ctx
+ ~~~~
+ CategoryInfo : InvalidArgument: (:) [Get-AzStorageContainer], ParameterBindingException
+ FullyQualifiedErrorId : CannotConvertArgument,Microsoft.WindowsAzure.Commands.Storage.Blob.Cmdlet.GetAzureStorageContainerCommand
PS C:\WINDOWS\system32\WindowsPowerShell\v1.0> $ctx[0].GetType().FullName
Microsoft.WindowsAzure.Commands.Common.Storage.LazyAzureStorageContext
The suggested method by Kryzstof:
$storageAccount = Get-AzStorageAccount
$ctxs = $storageAccount.Context
&{
foreach ($ctx in $ctxs) {
$acl = Get-AzStorageContainerAcl -Context $ctx
Write-Host $acl
}
} | ogv
is showing some strange result like below:
Microsoft.WindowsAzure.Commands.Common.Storage.ResourceModel.AzureStorageContainer Microsoft.WindowsAzure.Commands.Common.Storage.ResourceModel.AzureStorageContainer Microsoft.WindowsAzure.Commands.Common.Storage.Resourc eModel.AzureStorageContainer Microsoft.WindowsAzure.Commands.Common.Storage.ResourceModel.AzureStorageContainer Microsoft.WindowsAzure.Commands.Common.Storage.ResourceModel.AzureStorageContainer Microsoft.WindowsAzure.Co mmands.Common.Storage.ResourceModel.AzureStorageContainer Microsoft.WindowsAzure.Commands.Common.Storage.ResourceModel.AzureStorageContainer Microsoft.WindowsAzure.Commands.Common.Storage.ResourceModel.AzureStorageContainer Microsoft.WindowsAzure.Commands.Common.Storage.Resourc eModel.AzureStorageContainer
Microsoft.WindowsAzure.Commands.Common.Storage.ResourceModel.AzureStorageContainer Microsoft.WindowsAzure.Commands.Common.Storage.ResourceModel.AzureStorageContainer Microsoft.WindowsAzure.Commands.Common.Storage.ResourceModel.AzureStorageContainer Microsoft.WindowsAzure.Commands.Common.Storage.ResourceModel.AzureStorageContainer Microsoft.WindowsAzure.Commands.Common.Storage.ResourceModel.AzureStorageContainer Microsoft.WindowsAzure.Commands.Common.Storage.Resourc eModel.AzureStorageContainer Microsoft.WindowsAzure.Commands.Common.Storage.ResourceModel.AzureStorageContainer Microsoft.WindowsAzure.Commands.Common.Storage.ResourceModel.AzureStorageContainer Microsoft.WindowsAzure.Co mmands.Common.Storage.ResourceModel.AzureStorageContainer Microsoft.WindowsAzure.Commands.Common.Storage.ResourceModel.AzureStorageContainer Microsoft.WindowsAzure.Commands.Common.Storage.ResourceModel.AzureStorageContai ner Microsoft.WindowsAzure.Commands.Common.Storage.ResourceModel.AzureStorageContainer Microsoft.WindowsAzure.Commands.Common.Storage.ResourceModel.AzureStorageContainer Microsoft.WindowsAzure.Commands.Common.Storage.Resourc eModel.AzureStorageContainer Microsoft.WindowsAzure.Commands.Common.Storage.ResourceModel.AzureStorageContainer Microsoft.WindowsAzure.Commands.Common.Storage.ResourceModel.AzureStorageContainer Microsoft.WindowsAzure.Co mmands.Common.Storage.ResourceModel.AzureStorageContainer Microsoft.WindowsAzure.Commands.Common.Storage.ResourceModel.AzureStorageContainer Microsoft.WindowsAzure.Commands.Common.Storage.ResourceModel.AzureStorageContai ner Microsoft.WindowsAzure.Commands.Common.Storage.ResourceModel.AzureStorageContainer Microsoft.WindowsAzure.Commands.Common.Storage.ResourceModel.AzureStorageContainer Microsoft.WindowsAzure.Commands.Common.Storage.Res ourceModel.AzureStorageContainer Microsoft.WindowsAzure.Commands.Common.Storage.ResourceModel.AzureStorageContainer Microsoft.WindowsAzure.Commands.Common.Storage.ResourceModel.AzureStorageContainer Microsoft.WindowsAzur e.Commands.Common.Storage.ResourceModel.AzureStorageContainer Microsoft.WindowsAzure.Commands.Common.Storage.ResourceModel.AzureStorageContainer Microsoft.WindowsAzure.Commands.Common.Storage.ResourceModel.AzureStorageCo ntainer Microsoft.WindowsAzure.Commands.Common.Storage.ResourceModel.AzureStorageContainer Microsoft.WindowsAzure.Commands.Common.Storage.ResourceModel.AzureStorageContainer Microsoft.WindowsAzure.Commands.Common.Storage .ResourceModel.AzureStorageContainer Microsoft.WindowsAzure.Commands.Common.Storage.ResourceModel.AzureStorageContainer Microsoft.WindowsAzure.Commands.Common.Storage.ResourceModel.AzureStorageContainer Microsoft.Windows Azure.Commands.Common.Storage.ResourceModel.AzureStorageContainer Microsoft.WindowsAzure.Commands.Common.Storage.ResourceModel.AzureStorageContainer Microsoft.WindowsAzure.Commands.Common.Storage.ResourceModel.AzureStora geContainer Microsoft.WindowsAzure.Commands.Common.Storage.ResourceModel.AzureStorageContainer Microsoft.WindowsAzure.Commands.Common.Storage.ResourceModel.AzureStorageContainer Microsoft.WindowsAzure.Commands.Common.Sto rage.ResourceModel.AzureStorageContainer Microsoft.WindowsAzure.Commands.Common.Storage.ResourceModel.AzureStorageContainer Microsoft.WindowsAzure.Commands.Common.Storage.ResourceModel.AzureStorageContainer Microsoft.WindowsAzure.Commands.Common.Storage.ResourceModel.AzureStorageContainer
Upvotes: 0
Views: 792
Reputation: 40603
You have array and you can't pass it at once. You'll have to call it for each available context:
# Get context object.
$storageAccount = Get-AzStorageAccount #-ResourceGroupName $rgName -Name $accountName
$ctxs = $storageAccount.Context
foreach ($ctx in $ctxs) {
# Read the container's public access setting.
$acl = Get-AzStorageContainerAcl -Context $ctx
Write-Host $acl
}
Please try use just '$acl | Out-GridView' (instead of Write-Host $acl
) and you should get:
If you want to get just URI you can get it from here
Write-Host $acl.Context.BlobEndPoint
however if this is not exactly what you want please call $acl| ConvertTo-JSON
and find property you are looking for.
Upvotes: 2