我有脚本,它创建了vitrual机器,并通过dsc安装谷歌浏览器。我创建了当前的存储帐户,并执行了脚本。但是下次我有错误。这是我的剧本:
$SubscriptionName = "subscription_name"
Select-AzureSubscription -SubscriptionName $SubscriptionName
#Replace the variable values as needed
$VMName = "CSETest"
$StorageAccount = 'googleChrome'
$StorageKey = 'key'
$StorageContainer = 'dscarchives'
$ServiceName="ChromeInstaller"
#Get the OS image reference
$arrayWindows=( Get-AzureVMImage | where-object { $_.ImageName -like "*Windows*Server*2012*R2*en.us*" } )
$locationAllow=$arrayWindows[$arrayWindows.Count-1].Location
$locationAllow=$locationAllow.Split(";")
$locationAllow=$locationAllow | where-object { $_ -like "* US*"}
$Localization=(Get-Random -InputObject $locationAllow)
#Create VM Config with last windows update
$vmConfig = New-AzureVMConfig -Name $VMName -ImageName $arrayWindows[$arrayWindows.Count-1].ImageName -InstanceSize Small
#Create Provisioning Configuration
$vmProvisioningConfig = Add-AzureProvisioningConfig -VM $vmConfig -Windows -AdminUsername "login" -Password "password"
$StorageContext = New-AzureStorageContext -StorageAccountName $StorageAccount -StorageAccountKey $StorageKey
Publish-AzureVMDscConfiguration -ConfigurationPath .\ChromeInstaller.ps1 -ContainerName $StorageContainer -StorageContext $StorageContext -Force
#Set the Azure VM DSC Extension to run the LCM meta-configuration
$vmAzureExtension = Set-AzureVMDscExtension -VM $vmProvisioningConfig -ConfigurationArchive ChromeInstaller.ps1.zip -ConfigurationName OpenChrome -Verbose -StorageContext $StorageContext -ContainerName $StorageContainer -Force
#Create a VM
New-AzureVM -ServiceName $ServiceName -VMs $vmAzureExtension -Location $Localization -WaitForBoot
在最后一行,脚本抛出异常:
New-AzureVM:BadRequest:源映像所在的存储帐户的位置或关联组中美国 a699494373c04fc0bc8f2bb1389d6106__Windows-Server-2012-R2-201410.01-en.us-127GB.vhd驻留不在同一位置或关联组中 指定的云服务。源映像必须位于与云具有相同关联组或位置的存储帐户中 服务美国西部。
因此,正如您所看到的,我的脚本会生成随机位置。我无法与位置链接。那么,我该如何修复这个错误呢?
答案 0 :(得分:1)
源映像VHD必须与新虚拟机位于同一位置。使用AzCopy将图片复制到$locationAllow
中列出的所有位置的存储帐户。
答案 1 :(得分:0)
简单的答案是在与存储帐户相同的位置创建VM。这告诉您,您的云服务位置中不存在存储帐户位置中的Azure操作系统映像。
你也可以尝试这个
$AzureLocation = (get-azurelocation)
$Localization=(Get-Random -InputObject $AzureLocation)
$WindowsImage=( Get-AzureVMImage | where-object { $_.ImageName -like "*Windows*Server*2012*R2*en.us*" -and $_.Location -Match $Localization.DisplayName } | sort PublishedDate | select -first 1 ).ImageName
#Create VM Config with last windows update
$vmConfig = New-AzureVMConfig -Name $VMName -ImageName $WindowsImage -InstanceSize Small
使用此方法,我们选择一个位置,然后选择位于该位置的图像。之前您正在选择一个图像(可能位于美国西部位置),然后选择一个位置。
另外,获取存储帐户的位置并使用该位置获取映像并在存储帐户的相同位置创建云服务