我创建了一个名为$VMStatus
$VMStatus = Get-AzureRmVM -ResourceGroupName $RGName -VMName $VMName -status
现在,当我运行$VMStatus.Extensions.Type
时,它会返回所提供条目的虚拟机扩展列表。
所以现在当我运行$VMStatus.Extensions.Type -Match "Custom"
时,它会返回我感兴趣的条目:Microsoft.Compute.CustomScriptExtension
我遇到的问题是获得Name
的{{1}}。我试过以下但没有成功:
CustomScriptExtension
这实际上会返回IF ($VMstatus.Extensions.Type -Match "Custom") {$VMstatus.Extensions.Name}
的所有条目,因为Name
语句的第一部分是IF
。
如果只存在TRUE
Name
,我该怎么回事?
答案 0 :(得分:0)
您可以尝试使用以下脚本。
##If VirtualMachineExtensionType eq CustomScriptExtension, it means custom script extension install on your VM
$vm=Get-AzureRmVm -ResourceGroupName $RGName -Name $VMName |Where {$_.Extensions.VirtualMachineExtensionType -eq "CustomScriptExtension"}
if ($vm){
$name = $vm.Extensions|Where {$_.VirtualMachineExtensionType -eq "CustomScriptExtension"} |select Name
$name
}
答案 1 :(得分:0)
感谢@ shengbao-shui-msft提供上述答案。 我已经采纳了他的建议并将其修改为首先查找CustomScriptExtension,如果存在,则在继续执行Runbook之前将其删除
$VM = Get-AzureRMVM -ResourceGroupName $RGName -Name $VMName | Where-Object {$_.Extensions.VirtualMachineExtensionType -eq "CustomScriptExtension"}
IF ($vm)
{
$name = $vm.Extensions | Where-Object {$_.VirtualMachineExtensionType -eq "CustomScriptExtension"} | select-object -ExpandProperty Name
write-host "Existing CustomScriptExtension found on $VMName as $name . Removing...."
Remove-AzureRmVMCustomScriptExtension `
-VMName $VMName `
-ResourceGroupName $RGName `
-Name $name
}
Else
{
write-host "There are no CustomScriptExtension found on $VMName . "
}