Я пытаюсь написать сценарий, который я могу автоматизировать на Azure, чтобы создать новый экземпляр облачной службы. У меня возникли проблемы с работой командлета New-AzureDeployment.Использование Azure Automation для создания экземпляра облачной службы с использованием Powershell
Файлы CSPKG и CSCFG хранятся на Azure под одной учетной записью хранения, но в разных контейнерах. Они были загружены с помощью CloudBerry.
param(
[parameter(Mandatory=$False)]
[string] $StorageAccount = 'storageaccount',
[parameter(Mandatory=$False)]
[string] $ServiceName = 'cloudservicesdev',
[parameter(Mandatory=$False)]
[string] $Slot = 'Production',
[parameter(Mandatory=$False)]
[string] $Label = 'BASE'
)
Write-Output "Start of workflow"
$cert = Get-AutomationCertificate -Name 'Credential'
$subID = 'subId'
Set-AzureSubscription -SubscriptionName "SubName" -CurrentStorageAccountName $StorageAccount -Certificate $cert -SubscriptionId $subID
Select-AzureSubscription "SubName"
$package = (Get-AzureStorageBlob -blob "package.cspkg" -Container "package").ICloudBlob.uri.AbsoluteUri
$config = (Get-AzureStorageBlob -blob "Config - Dev.cscfg" -Container "config").ICloudBlob.uri.AbsoluteUri
New-AzureDeployment -ServiceName "$ServiceName" -Slot "$Slot" -Package "$package" -Configuration "$config" -Label "$Label"
Я получаю следующую ошибку
2014-12-08 05:57:57 PM, Error: New-AzureDeployment : The given path's format is not supported.
At Create_New_Cloud_Service_Instance:40 char:40
+
+ CategoryInfo : NotSpecified: (:) [New-AzureDeployment], NotSupportedException
+ FullyQualifiedErrorId :
System.NotSupportedException,Microsoft.WindowsAzure.Commands.ServiceManagement.HostedServices.NewAzureDeploymentCommand
Я проверил оба $ пакета и $ переменных конфигурации и они указывают на расположение файлов я бы ожидать (https://storageaccount.blob.core.windows.net/package/package.cspkg и https://storageaccount.blob.core.windows.net/config/Config%20-%20Dev.cscfg соответственно). Они соответствуют URL-адресам, которые я вижу при навигации по файлам под их контейнерами в хранилище.
Это похоже на примеры, которые я видел. Что я сделал не так?
Это новый код, который я использовал основанный на ответ Джо ниже
Я также использовал этот пример сценария https://gallery.technet.microsoft.com/scriptcenter/Continuous-Deployment-of-A-eeebf3a6, чтобы помочь с помощью изолированной программной среде Azure автоматизации
param(
[parameter(Mandatory=$False)]
[string] $StorageAccount = 'storageaccount',
[parameter(Mandatory=$False)]
[string] $ServiceName = 'cloudservicesdev',
[parameter(Mandatory=$False)]
[string] $Slot = 'Production',
[parameter(Mandatory=$False)]
[string] $Label = 'BASE'
)
Write-Output "Start of workflow"
$cert = Get-AutomationCertificate -Name 'Credential'
$subID = 'subId'
Set-AzureSubscription -SubscriptionName "SubName" -CurrentStorageAccountName $StorageAccount -Certificate $cert -SubscriptionId $subID
Select-AzureSubscription "SubName"
$package = (Get-AzureStorageBlob -blob "package.cspkg" -Container "package").ICloudBlob.uri.AbsoluteUri
$TempFileLocation = "C:\temp\Config - Dev.cscfg"
$config = (Get-AzureStorageBlobContent -blob "Config - Dev.cscfg" -Container "config" -Destination $TempFileLocation -Force)
New-AzureDeployment -ServiceName "$ServiceName" -Slot "$Slot" -Package "$package" -Configuration $TempFileLocation -Label "$Label"
Почему путь конфигурации содержит% 20? Вы пытались избежать пробелов в имени файла? Во-вторых - (не уверен, требуется ли это, но) вы пытались сделать контейнеры blob (пакет, config) общедоступными? –