Сохранение URI токена SAS Azure в файл в Powershell

Мне нужно записать полный URI большого двоичного объекта хранилища Azure - с токеном SAS - из переменной в файл и прочитать его при последующем запуске сценария (на другой стороне перезагрузка). Поскольку URI-токены SAS содержат по крайней мере один амперсанд, переменная, выводимая в файл, усекается на первом;

$sasTokenURI | out-file "c:\sasTokenURI.txt"

Записывает URI до первого амперсанда и исключая его.

Как я могу заставить Powershell дословно выводить URI в файл, а затем дословно читать его позже?

0
задан 29 January 2018 в 05:28
2 ответа

Я не уверен, что я правильно понимаю, если в моем ответе что-то не так, укажите мне. Следующий шаг подойдет мне, может, вы могли бы проверить.

$StorageAccountName = "shuilinuxdiag336"
$StorageAccountContext = (Get-AzureRmStorageAccount | Where-Object{$_.StorageAccountName -eq $StorageAccountName}).Context
$StorageContainerName = "customscriptfiles"

$StartTime = Get-Date
$EndTime = (Get-Date).AddHours(4)
$blobName = "install_nginx_ubuntu.sh"
$SASURI = New-AzureStorageBlobSASToken -Container $StorageContainerName `
    -Blob $blobName `
    -Context $StorageAccountContext `
    -Permission "rwd" `
    -StartTime $StartTime `
    -ExpiryTime $EndTime `
    -FullUri

$SASURI | out-file "C:\Users\v-shshui\test.txt"

$sasTokenURI = cat "C:\Users\v-shshui\test.txt"

Invoke-WebRequest -Uri $sasTokenURI -OutFile $blobName

Я тестирую в своей лаборатории, у меня работает.

enter image description here

0
ответ дан 24 November 2019 в 03:12

Похоже, URI не был отключен сценарием установки, он был отключен при передаче сценарию установки через шаблон. Амперсанды в Powershell зарезервированы для загадочного будущего использования.

Я прекратил это делать (для тех, у кого такая же проблема), используя .replace ("&", "@") повсюду и только отменив замену до того, как я вызвал веб-запрос. Теперь все работает нормально.

0
ответ дан 24 November 2019 в 03:12

Теги

Похожие вопросы