如何将 SAS 令牌字符串作为文字传递给 Azure CLI?
How to pass a SAS-token string as literal to the Azure CLI?
以下在经典 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.
关于 "specified resource can not be found" 的错误是无效的,因为我已经在经典命令提示符下尝试了相同的命令。
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 令牌字符串作为文字传递给 Azure CLI
?
这发生在我身上 PowerShell Core 6.2.3 64-bit
...更新到 PowerShell Core 7.0.0
后同样适用
将 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
如果我用单引号括起 SAS 令牌,我可以重现此错误:
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 令牌括起来,我就能够获取 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>"
以下在经典 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.
关于 "specified resource can not be found" 的错误是无效的,因为我已经在经典命令提示符下尝试了相同的命令。
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 令牌字符串作为文字传递给 Azure CLI
?
这发生在我身上 PowerShell Core 6.2.3 64-bit
...更新到 PowerShell Core 7.0.0
将 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
如果我用单引号括起 SAS 令牌,我可以重现此错误:
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 令牌括起来,我就能够获取 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>"