Powershell Remove AzureDisk抛出错误,不确定原因
我有一个Azure虚拟机,我正在尝试使用Powershell删除它。我还想删除虚拟机操作系统所在的磁盘(没有数据磁盘)。 我假设需要以下两个cmdlet:Powershell Remove AzureDisk抛出错误,不确定原因,powershell,azure,virtual-machine,Powershell,Azure,Virtual Machine,我有一个Azure虚拟机,我正在尝试使用Powershell删除它。我还想删除虚拟机操作系统所在的磁盘(没有数据磁盘)。 我假设需要以下两个cmdlet: 移除AzureVM 取出AzureDisk 这是我的密码: $VMs = Get-AzureVM $svcName foreach ($VM in $VMs) { $OSDisk = ($VM | Get-AzureOSDisk) if ($VM.InstanceStatus -eq "ReadyRole") {
- 移除AzureVM
- 取出AzureDisk
$VMs = Get-AzureVM $svcName
foreach ($VM in $VMs)
{
$OSDisk = ($VM | Get-AzureOSDisk)
if ($VM.InstanceStatus -eq "ReadyRole") {
Stop-AzureVM -Name $VM.Name -ServiceName $svcName
}
remove-azurevm -ServiceName $svcName -Name $VM.Name
Remove-AzureDisk -DiskName $OSDisk.DiskName
}
执行此操作时,删除AzureVM的调用将成功返回,但删除AzureDisk的调用将返回错误:
删除AzureDisk:BadRequest:名称为的磁盘
XXX目前正在使用中
通过在托管服务中运行的虚拟机YYY
ZZZ,部署XYZ
奇怪的是,我可以在几分钟后发出相同的调用来删除AzureDisk,并且它成功返回
似乎删除AzureVM的调用返回得太快了。i、 e.在VM完全移除之前,或在磁盘链接以任何速度移除之前,其报告成功
有人能解释为什么会这样,以及我如何解决这个问题吗
提前谢谢
Jamie这里发生的事情是,当虚拟机使用BLOB存储时,存储在BLOB存储中的磁盘被锁定。您正在删除VM,但需要几分钟才能释放BLOB上的租约。这就是为什么您可以在几分钟后删除它
有一些人编写了PowerShell来破坏租约,或者您可以使用PowerShell使用SDK(或直接调用REST API)来检查租约状态。我最后编写了一个脚本,创建VM,克隆它,然后删除克隆。作为其中的一部分,我需要等待,直到租约被释放,因此,如果你遇到同样的问题,你可能想查看我的博客文章,因为它会有一些代码,可能会帮助你 问候
杰米我对此困惑了好一阵子。最终,我找到了一个不同的命令来执行我认为我正在使用这个命令执行的操作。我建议使用remove-azuredatadisk命令删除磁盘,因为它会自动中断租约
Get-AzureVM -ServiceName <servicename> -name <vmname> |Remove-AzureDataDisk -lun <lun#> -deletevhd | Update-AzureVM
这是有关的。在这里交叉张贴我的答案:
我无法使用(2016)门户删除我(经典)存储帐户中的孤立磁盘。下面是使用PowerShell删除这些孤立磁盘的详细演练
动力壳
如果尚未安装PowerShell,请下载并安装。(.)此doclink的初始步骤:
- 检查Azure PowerShell模块在安装后是否可用:
Get模块–列表可用
- 如果未列出Azure PowerShell模块,您可能需要导入它:
导入模块Azure
- 登录Azure资源管理器:
登录AzureRmAccount
- 检索您的PublishSettings文件。
获取AzurePublishSettingsFile
- Get-AzurePublishSettings文件启动并提示您下载可保存在任何位置的XML文件。
- 参考:
- Get-AzurePublishSettings文件启动并提示您下载可保存在任何位置的XML文件。
- 导入AzurePublishSettingsFile并指定刚保存的文件的路径。
导入AzurePublishSettings文件-PublishSettings文件“”
- 显示当前磁盘。(参考资料:)
获取AzureDisk
- 快速卸下所有磁盘。(归功于)
获取azuredisk |删除azuredisk
- 或按名称删除磁盘。(归功于)
Remove-AzureDisk-DiskName-disk-name-000000000000000000-DeleteVHD
Get-AzureVM -ServiceName <servicename> -name <vmname> | Get-AzureDataDisk