Как передать строку SAS-токена как литерал в CLI Azure? - PullRequest
0 голосов
/ 01 мая 2020

Следующее работает в командной строке classi c windows, но не при использовании командной строки PowerShell:

az storage blob show 
    --container-name <container name> 
    --name training.txt 
    --account-name <account> 
    --sas-token "spr=https&sv=2018-11-09&si=readpolicy&sr=b&sig=<the signature>"

Согласно about_Quoting_Rules строка в одинарных кавычках должна быть взятым буквально. Однако следующее по-прежнему не работает с:

The specified resource does not exist. ErrorCode: ResourceNotFound

Der Befehl "sv" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.
Der Befehl "si" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.
Der Befehl "sr" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.
Der Befehl "sig" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.

Ошибка об «указанном ресурсе не может быть найдена» недопустима, потому что я пробовал ту же команду с командной строкой classi c, где она работала.

az storage blob show 
    --container-name <container name> 
    --name training.txt 
    --account-name <account> 
    --sas-token 'spr=https&sv=2018-11-09&si=readpolicy&sr=b&sig=<the signature>'

Итак, как я могу передать эту строку SAS-Token как литерал в Azure CLI?


Это случилось со мной с PowerShell Core 6.2.3 64-bit ... то же самое применяется после обновления до PowerShell Core 7.0.0

Ответы [ 2 ]

1 голос
/ 01 мая 2020

Я могу воспроизвести эту ошибку, если я заключаю SAS Token в одинарные кавычки:

az storage blob show 
    --container-name <container name> 
    --name training.txt 
    --account-name <account> 
    --sas-token 'spr=https&sv=2018-11-09&si=readpolicy&sr=b&sig=<the signature>'

Однако если я заключаю SAS Token в двойные кавычки, я могу получить свойства BLOB-объекта.

az storage blob show 
    --container-name <container name> 
    --name training.txt 
    --account-name <account> 
    --sas-token "spr=https&sv=2018-11-09&si=readpolicy&sr=b&sig=<the signature>"

ОБНОВЛЕНИЕ

Мне удалось воспроизвести эту проблему в консоли PowerShell с двойными кавычками. Однако, если бы я включил --% (который я считаю для stop parsing token) в моей команде, я смог бы заставить его работать.

Можете ли вы попробовать что-то вроде:

az storage blob show --% --container-name <container name> --name training.txt --account-name <account> --sas-token "spr=https&sv=2018-11-09&si=readpolicy&sr=b&sig=<the signature>"
0 голосов
/ 01 мая 2020

Присвойте токен SAS переменной и используйте его,

Например:

$saskey=az storage container generate-sas -n $Tempcontainer --account-name $storageAccountName --https-only --permissions dlrw --expiry $end 

, а затем используйте как

az storage blob show 
    --container-name <container name> 
    --name training.txt 
    --account-name <account> 
    --sas-token $saskey
...