![Azure 资源管理器存储 - 我可以使用 PowerShell 删除 VHD 文件吗?](https://linux22.com/image/686989/Azure%20%E8%B5%84%E6%BA%90%E7%AE%A1%E7%90%86%E5%99%A8%E5%AD%98%E5%82%A8%20-%20%E6%88%91%E5%8F%AF%E4%BB%A5%E4%BD%BF%E7%94%A8%20PowerShell%20%E5%88%A0%E9%99%A4%20VHD%20%E6%96%87%E4%BB%B6%E5%90%97%EF%BC%9F.png)
我最近一直在学习基于 Azure 资源管理器模板的部署,因此,在改进 ResourceManager 模板时,我部署和删除了大量虚拟机。我编写了一个 PowerShell 脚本来删除给定的虚拟机、负载均衡器、公共 IP 地址、网络接口等,但我找不到用于从 AzureRM 存储帐户中删除 VHD / blob / 的等效 cmdlet。
是否有 AzureRM PowerShell 方法来删除存储在 Azure ResourceManager 存储帐户中的 VHD 文件?或者这尚未实现?如果没有,是否有任何命令行替代方案(例如 Azure CLI 或解决方法)?
我看过:
Get-Command -Module AzureRM.Storage
由此可见:
CommandType Name Version Source
----------- ---- ------- ------
Cmdlet Get-AzureRmStorageAccount 1.1.3 AzureRm.Storage
Cmdlet Get-AzureRmStorageAccountKey 1.1.3 AzureRm.Storage
Cmdlet Get-AzureRmStorageAccountNameAvailability 1.1.3 AzureRm.Storage
Cmdlet Get-AzureRmStorageUsage 1.1.3 AzureRm.Storage
Cmdlet New-AzureRmStorageAccount 1.1.3 AzureRm.Storage
Cmdlet New-AzureRmStorageAccountKey 1.1.3 AzureRm.Storage
Cmdlet Remove-AzureRmStorageAccount 1.1.3 AzureRm.Storage
Cmdlet Set-AzureRmCurrentStorageAccount 1.1.3 AzureRm.Storage
Cmdlet Set-AzureRmStorageAccount 1.1.3 AzureRm.Storage
... 它没有我想要的。最接近的方法是添加和删除整个存储帐户,但由于我是从自定义模板部署的,我认为我只能将 VM VHD 存储在与模板相同的存储帐户中(如果我错了,请纠正我)。相比之下,Azure.Storage 模块有 *StorageFile/Blob/Container cmdlet。鉴于我看到了听起来像我想要的经典 Azure cmdlet,但没有 AzureRM 等效项,我怀疑答案暂时是“否”。
作为参考,我正在运行 Windows 10,并在过去几周内从 PowerShell 库安装了最新的 AzureRM PowerShell 模块(AzureRM 模块 1.6.0、AzureRM.Storage 1.1.3)
答案1
您可以将 Context 传递给 Remove-AzureStorageBlob。
$RGName = "stlvm"
$SAName = "stlvmstorage"
$ConName = "testcontainer"
$BlobName = "Test02.txt"
$Keylist = Get-AzureRmStorageAccountKey -ResourceGroupName $RGName -StorageAccountName $SAName
$Key = $Keylist[0].Value
$Ctx = New-AzureStorageContext -StorageAccountName $SAName -StorageAccountKey $Key
Get-AzureStorageBlob -Container $ConName -Context $Ctx | select Name
Remove-AzureStorageBlob -Container $ConName -Blob $BlobName -Context $Ctx
Get-AzureStorageBlob -Container $ConName -Context $Ctx | select Name
我已经在实验室服务器上测试过了。对我来说,它是有效的。