我有一个Azure存储帐户,其中有多个容器。如何检查所有容器以查看其中是否有特定命名的Blob?而且Blob有多个目录。我知道有az storage blob exists命令,但它需要一个容器名称参数。我必须先使用列出容器命令吗?
az storage blob exists
svujldwt1#
是的,你需要得到容器列表。我已经在我的环境中复制,并得到了预期的结果,如下所示,我按照微软文档:方法之一是首先,我已经执行了下面的代码获取容器列表:
$storage_account_name="rithemo"$key="T0M65s8BOi/v/ytQUN+AStFvA7KA=="$containers=az storage container list --account-name $storage_account_name --account-key $key $x=$containers | ConvertFrom-json$x.name
$storage_account_name="rithemo"
$key="T0M65s8BOi/v/ytQUN+AStFvA7KA=="
$containers=az storage container list --account-name $storage_account_name --account-key $key
$x=$containers | ConvertFrom-json
$x.name
x1c 0d1x *$key =存储帐户密钥 *现在获取我的存储帐户中所有容器中存在的每个blob:
$Target = @()foreach($emo in $x.name ) {$y=az storage blob list -c $emo --account-name $storage_account_name --account-key $key$y=$y | ConvertFrom-json$Target += $y.name} $Target
$Target = @()
foreach($emo in $x.name )
{
$y=az storage blob list -c $emo --account-name $storage_account_name --account-key $key
$y=$y | ConvertFrom-json
$Target += $y.name
}
$Target
现在检查给定的blob是否存在,如下所示:
$s="Check blob name" if($Target -contains $s){Write-Host("Blob Exists")}else{ Write-Host("Blob Not Exists") }
$s="Check blob name"
if($Target -contains $s){
Write-Host("Blob Exists")
}else{
Write-Host("Blob Not Exists")
也可以在得到containers列表后直接使用az storage blob exists命令,如下所示:
foreach($emo in $x.name ) {az storage blob exists --account-key $key --account-name $storage_account_name --container-name mycontainer --name $emo --name "xx"}
az storage blob exists --account-key $key --account-name $storage_account_name --container-name mycontainer --name $emo --name "xx"
nwwlzxa72#
是的,您将需要使用List Containers命令来获取存储帐户中所有容器的列表,然后您可以遍历容器列表,并检查每个容器是否有您要查找的特定blob。下面的示例说明了如何使用Azure CLI完成此操作
# First, get a list of all the containers in your storage accountcontainers=$(az storage container list --account-name YOUR_STORAGE_ACCOUNT_NAME --output tsv --query '[].name')# Loop through the list of containersfor container in $containersdo # Check if the specific blob exists in the current container az storage blob exists --account-name YOUR_STORAGE_ACCOUNT_NAME --container-name $container --name YOUR_BLOB_NAME # If the blob exists, print a message and break out of the loop if [ $? -eq 0 ]; then echo "Blob found in container: $container" break fidone
# First, get a list of all the containers in your storage account
containers=$(az storage container list --account-name YOUR_STORAGE_ACCOUNT_NAME --output tsv --query '[].name')
# Loop through the list of containers
for container in $containers
do
# Check if the specific blob exists in the current container
az storage blob exists --account-name YOUR_STORAGE_ACCOUNT_NAME --container-name $container --name YOUR_BLOB_NAME
# If the blob exists, print a message and break out of the loop
if [ $? -eq 0 ]; then
echo "Blob found in container: $container"
break
fi
done
2条答案
按热度按时间svujldwt1#
是的,你需要得到容器列表。我已经在我的环境中复制,并得到了预期的结果,如下所示,我按照微软文档:
方法之一是首先,我已经执行了下面的代码获取容器列表:
x1c 0d1x *$key =存储帐户密钥 *
现在获取我的存储帐户中所有容器中存在的每个blob:
现在检查给定的blob是否存在,如下所示:
也可以在得到containers列表后直接使用
az storage blob exists
命令,如下所示:nwwlzxa72#
是的,您将需要使用List Containers命令来获取存储帐户中所有容器的列表,然后您可以遍历容器列表,并检查每个容器是否有您要查找的特定blob。
下面的示例说明了如何使用Azure CLI完成此操作